修改PlayerChar的材质
打开RootMotion
自带位移和没有位移的动画
选中Attack12
RootMotion中创建动画蒙太奇
可以修改动画蒙太奇的属性
绑定attack动作映射
PlayerChar添加DoAttack自定义事件
选择动画蒙太奇
控制器中触发DoAttack事件
出现播放动画时返回原地的情况
为了解决这个问题, 显示胶囊体, 右侧->hidden in game 取消勾选
发现胶囊体的位置没有发生变化
在动画中取消动画的位移
连点时会鬼畜, 如何解决
返回值是蒙太奇播放的时间
添加Delay函数
添加isAttack变量
播放完就取消攻击
攻击时就设置正在攻击
判断一下是否攻击, 没有攻击就进行攻击
修改蒙太奇函数, 功能比上一个函数功能更多
播放动画完毕再执行设置
连招算法
连招算法之后同步
攻击转向
CalculLastInput
计算最后rotation, 获取输入的角度
playerChar->CalculLastInput函数
绑定到Tick事件中
系统自带函数与自定义函数的区别
SetRotationByAnim函数
作用:播放动画的时候改变角度
添加参数
IsInterp
InterpSpeed
解释:interp渐变
RInterpTo函数解释
创建动画通知触发SetRotationByAnim
创建动画通知文件夹AnimNotify
创建蓝图父类选AnimNotifyState
重命名为RotationByAnim
创建两个变量
InterpSpeed
动画通知蓝图概览
重载函数
GetNotifyName()
返回通知名称
输入PlayerRotation
打开Combo_01_Montage
添加通知
在新增的通知上添加通知状态
添加结果
原理解释:
这个区间内可以转向, 区间外禁止转向.
注意此处有动画通知状态的参数显示
设置渐变速度参数为10
为所有蒙太奇添加通知状态
如下
再重载两个函数
Recived_NotifyEnd
Recived_NotifyTick
通知实现, 蓝图绘制
此处攻击转向完成
伤害
为Combo_01添加通知输入名称PlayerHit
攻击到此时产生一个球形检测
再添加一个相同的通知PlayerNotify
下一次可以从骨架通知中找到之前的通知
添加类似四个动画通知
PlayerChar创建自定义事件DoPlayerHit(检查伤害事件)
创建球形检测, 并提升变量
完整蓝图
动画通知
处理伤害事件
创建球形碰撞检测, 设置默认值为Pawn
两处相差正好是球的半径
在动画蓝图PlayerCharABP
中使用动画通知PlayerHit
触发自定义的DoPlayerHit事件
修改成长柄武器
添加一个圆柱Cylinder
调整为如下
将胶囊体隐藏
到此伤害已经处理完毕
闪避
添加一个动作映射
找到翻滚动画
通过动画创建动画蒙太奇
为滚动动画开启EnableRootMotion
创建自定义事件DoRoll
在PlayerController中绑定键盘Roll事件
但是这样连续按shift键会连续重复滚动动画
为了解决这个问题,
添加IsRoll
变量做是否正在滚动的判断, 同时修改montage的play rate为1.3
闪避时改变方向
为闪避蒙太奇添加通知状态
拉满, 这样闪避的过程中可以改变方向
修改弹簧臂的长度为400, 为了看清闪避时改变方向的效果
攻击时按闪避后无法攻击bug修复
因为攻击开启设置IsAttack变量为true, 但是在攻击过程中, 被闪避动画打断,导致IsAttack没有被恢复为false, 导致无法攻击.
在闪避蓝图中, 触发ComboReset事件, 将攻击状态还原.