概述 笔记 代码版本5.3 从宏观的角度看引擎的初始化和Tick。 https://www.yuque.com/chenweilin-tryw7/gbfomp/ffox34r27nwf9nte?singleDoc# 《UE 架构基础入门》 跨平台Main入口 首先我们能很容易的找到主函数在哪 int32 WINAPI WinMain(_In_ HINSTANCE hInInstance, _In_…
倾斜姿势 RelativeAccelerationAmount 相对加速量前面用过。 我们需要的是前后,左右。两个方向上的速度值,用于混合空间的参数 void UCwlBaseAnimIns::CalculateLeanAmount() { FCwlLeanAmount TargetLeanAmount; float DeltaSeconds = GetWorld()->GetDeltaSe…
在tick中不断执行更新角色旋转 UpdateGroundedRotation() UpdateInAirRotation() 核心函数 void ACwlCharacter::SmoothCharacterRotation(const FRotator &Target, float TargetInterpSpeed, float ActorInterpSpeed, float Delt…
速度混合 计算速度混合量,速度在各个方向上的占比。 比如我们有前后左右四个方向的动作,角色向左前方向移动,那么四个动作融合后,左前两个动作的混合比重是要比右后大的。 void UCwlBaseAnimIns::CalculateVelocityBlend() { FVector VelocityNormal = UKismetMathLibrary::Normal(Velocity); FVect…
首先我们需要计算相对加速量,在动画蓝图中 UPROPERTY(VisibleDefaultsOnly, BlueprintReadOnly, Category = "Cwl|Anim Graph - Grounded") FVector RelativeAccelerationAmount = FVector::ZeroVector; void UCwlBaseAnimIns:…
移动步幅 在角色骨骼的右下角可以添加曲线。 有什么用呢 我们打开一个Walk的动画,我们可以给动画添加曲线用于某些作用。比如曲线 Weight_Gait 的值 走1,跑2,冲刺3。这样我们就不用 在代码里。如果动画名 为 xxx 为跑步状态这样判断。而是动画当前帧曲线为多少作为判断依据。 那么我们逻辑维护走跑冲刺状态有什么用呢,用步态Gait变量不好吗。因为这个是逻辑上的。而动画实际可能还没切换过…
一个同步问题 问题的起因是我在做了这个调试UI后,某些情况下界面会抖。这个界面是我锁在角色脑袋上,所以应该是角色在抖。不开UI是看不出来的。应该是抖的很轻微。 后来我在这两篇文章找到了问题原因 在多人游戏中更新角色移动速度2 在多人游戏中更新角色移动速度1 一句话说明问题的原因: 前文我提到了我这样修改角色移动速度在网络环境下是有问题的 void ACwlCharacter::UpdateDyna…
数据驱动 这一部分的含义是角色在不同的运动状态下,比如旋转模式不同(瞄准状态,正常状态),步态不同(走,跑,冲刺),姿态不同(蹲伏,站立)应该有不同运动属性设置。 这里的属性包括,速度(MaxWalkSpeed),加速度(MaxAcceleration),减速度(BrakingDecelerationWalking),摩檫力(BrakingFriction),摩檫力系数(BrakingFricti…
先看一下这三个状态的枚举。主要是维护一些数据给动画蓝图用。 移动状态 MovememtState,前期只需要关注Ground和InAir 即可。Ground就是地面状态,InAir包括了空格键跳跃和前面没路了继续走的下落状态。 姿态 Stance。包括站立和蹲伏。 步态Gait。走,跑,冲刺三个状态。 UENUM(BlueprintType) enum class ECwlMovementStat…
我使用的动画资源。其实第一个就够 攀爬状态 打开角色运动组件,里面有一个默认陆地行走模式。改成custom自定义,然后再配合空的动画蓝图。运行后会发现角色动不了了。因为这里没有任何流程代码。 我们可以认为这个Custom状态就是现在的攀爬状态。 所以我们需要一个接口,进入和退出攀爬状态,就是设置上面的CharacterMovement 进入 MOVE_Custom 和 MOVE_Walking v…