前言
大部分游戏进行攻击操作都是这样逻辑
graph TD
触发攻击判断 --> 攻击判断成功
攻击判断成功 --> 播放动画
播放动画 --> 攻击完成
当然这是个笼统的过程 实际上有很多变化
有点杂的内容
人物动画
理解为模型的接受指令后进行的运动
UE4的小白人

UE4自家的小白人已经打好了骨骼 人物的运动其实就是骨骼一段时间的变化
动画蓝图
绑定人物骨骼后,就能进行动作的复现,这和mesh无关,理解为一次编译,四处运行。
做一个动画蓝图
前提你得会Blender,或者基本的建模操作
Blender是一个free建模软件,有人将UE4的小白人弄了出来,做了个插件


然后你咕哒咕哒就能明白这些RGB的作用就是调整模型位置
这样就能和Blender的动画制作搭上了
分层操作

将小白人的IK进行了分层,每个层都对应常用的环节,像手指的弯曲,背部的旋转
储存的动作

设计动作的关键帧存储在这,导出的也是这个部分的数据
非线性动画

设计好了的动作压栈后进就入这里,如果多个不同动作需要调节帧位置,要么就不勾选
摆了一天小白人后

凑合着用 总比掏钱去商店买要强
UE4导入后

就是这玩意 也就是动作 之后讲讲行为逻辑
攻击逻辑
先来个木桩 再来个小白人


一般设计中攻击动作和移动是在一块的
graph TD
Start --> 点击
点击 --> 命中地点
点击 --> 命中木桩
命中地点 --> 移动地点
命中木桩 --> 移动进入攻击距离
移动进入攻击距离 --> 执行攻击判定
这一块实现起来比较清晰

因为要实现进入攻击距离攻击这个行为,所以要用tick事件

Stake Into Attack Range

考虑到攻击距离是人物独有的,放到Character里去设计,
同时把攻击判定放到人物中
Hit Stake

这里用事件调度器 delegete去做生命值变化的工作
回到Stake中 进行事件的绑定

攻击判定后调用动画蓝图
新建状态机后 把自己做的攻击动画放进去

再把攻击判定放到导管里

回到事件中

先把操作人物的ref做一个存储
再来获取他的攻击判定结果

攻击帧 前腰 后腰

这个动画我做了38帧,我在33放了个通知事件,攻击结束

回到之前的HitStake中可以看到

graph TD
攻击结束 --> 进入Stake生命变化命令
前腰和优化抬手
也就是说前32帧都是自己控自己的行为,也就是玩游戏时的抬手动作,
什么优化抬手,就是把你的信息通知往前移动几帧
200ms/16.7=12
优化200ms抬手就是把你的信息通知往前移动12帧
后腰和取消后腰动画
后面34帧-38帧就是后腰 理解为动画的尾部,也是自己控自己,
不过有s停止玩家攻击的机制,也就是所谓的取消动画,强行进入Idle状态,
之后让人物做移动的行为
如果有所谓的皮肤优化抬手
那就是游戏公司卖皮肤把你的帧往前抬了几帧!
如果你开了盒子用了皮肤 改了客户端 发现抬手优化明显的一匹
SMDDX