ALS-运动系统解构

角色握持

角色蓝图:将物体绑在手上

动作蓝图: 

将握持动画截取一帧(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基础

(这一集是真的难,我没搞懂,只能记录下)

教程地址:番外-总结:IK基础_哔哩哔哩_bilibili

曲线映射-速度为轴

新建纯函数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,以此类推 

 

  • 8
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值