角色握持
角色蓝图:将物体绑在手上
动作蓝图:
将握持动画截取一帧(explicit time时间写好)
角色替换
在原人物模型下面加一个骨骼体(先不用添加模型),重命名为bodymesh
AI使用流程
新建一个文件夹,在文件夹里新建一个AI人蓝图ALS_AI_Controller
在已有的角色蓝图里,引进这个ai蓝图
新建一个行为树ALS_BT_AIICharacter,一个黑板AlS_BB_AICharacter。
将两者关联起来,行为树:
在行为树里写好节点
新建任务,改名字为ALS_BTTask_ChangeMesh
在弹出的窗口里新建Event Receive Execute AI
在角色蓝图里新建一个自定义事件ChangeMesh
完善任务的节点
行为树里添加change mesh(隔两秒,change mesh改成true;再隔两秒,change mesh改成false)
运行可以看到人物每隔两秒换一次皮肤
数据驱动
直接打开AdvancedLocomotionSystemV的工程来查看
在角色蓝图里新建一个变量,操作如下图
下面新建了好几个function,一层套一层,BeginPlay事件 ==》 On Begin Play函数 ==》 SetMovementModel函数
新建的MovementData的变量的类型是MovementSettingState
整理了一下函数和变量,做了归类
在角色蓝图里新建一个纯函数GetTargetMovementSetting
UpdateDynamicMovementSettings函数修改如下
对角色蓝图ALS Base Character BP的子蓝图ALS_Anim_CharacterBP也做add call to parent function操作
Ik基础
(这一集是真的难,我没搞懂,只能记录下)
曲线映射-速度为轴
新建纯函数Get Mapped Speed
移动步幅与走跑混合
在ALS_Base_CharacterBP中新建函数Set Essential Values
BPI GetEssentialValues 是之前从动画蓝图高级系统迁移过来的接口
在ALS_AnimBP新建函数Update Character Info
新建一个方法Update Movement Values和三个纯函数
纯函数1
纯函数2
其中的新建的宏Get Anim Curve Clamped
纯函数3
在动画蓝图里新建三个曲线变量(都要点亮眼睛设置为可编辑)
新建三个浮点函数,分别为AnimatedWalkSpeed,AnimatedRunSpeed,AnimatedSprintSpeed
动画蓝图里,MovementState的默认值为Grounded
BPI Get Current State
移动检测
获得三个参数
放到接口BPI Get Essential Values里
在动作蓝图的Update Character Info中,设置好这几个变量
在动作蓝图中,新建一个纯函数如下图
在动作蓝图的Update Graph中,先做一个move check的判断,再进行Update Movement Values
冲刺混合
逻辑:先计算加速度,再计算相对加速量
在角色蓝图里新建两个函数:CacheValues和CalculataAcceleration(加速度)
首先在CacheValues函数里储存一下上一秒的速度值
加速度=(速度后-速度前)/时间
在动作蓝图里新建一个纯函数Calculate Relative Acceleration Value
速度混合
在动画蓝图里新建一个变量VelocityBlend和一个纯函数CalculateVelocityBlend,加在UpdateMovementValues中
变量VelocityBlend:
纯函数CalculateVelocityBlend
用VelocityBlendInterpSpeed做八向运动的过渡缓冲
在动画蓝图里新建变量VelocityBlendInterpSpeed
在动画蓝图里新建纯函数InterpVelocityBlend
八向移动
1.移动方向
在动画蓝图里新建两个变量AimRotation和MovementDirection
新建一个纯函数CalculateMovementDirection
计算象限
角度范围内
新建函数
2.状态机
新建
在MoveF中
绿色的-MoveB
过渡的规则填好
3.融合冲刺
新建一个动画层
其中每个都改了起始时间(0.2)并且归类到组Locomotion
旋转处理
新建函数Smooth Character Rotation
新建函数Calculate Grounded Rotation Rate
新建函数Can Update Moving Rotation
新建函数Update Grounded Location
曲线偏移(第三人称的旋转方式)
按上图的方式,以此将6个放下的节点连上
新建GetAnimValue的纯函数
速度方向(第一人称的旋转方式)
更新Rotation Mode
在动画蓝图里新建一个变量Rotation Mode
摄像机系统 - 基础控制(没听懂)
将原来的AdvancedLocomotionV4的接口迁移到自己的工程中来
在类设置里加上这个摄像机系统的BPI
以下三个变量都是可编辑变量
在新建三个变量在ALS_PlayerCameraManager蓝图中
新建一个函数Get Camera Behavior Param
新建一个函数Custom Camera Behavior
新建一个纯函数Calculate Axis Independent Lag
摄像机系统 - 动画蓝图
在AnimGraph里新建一个状态机,重命名为Main Camera States
如图建立,并且写好3个过渡规则 以及混合设置(同样颜色的混合模式设置一样)
Locking Direction
Velocity Direction
Aiming
八向运动 - 混合与过渡
把自定义蓝图事件分别写上,如Move F写的是Hips_F,以此类推