在上一节(UE4 回合游戏项目 10- 添加怪物死亡动画)基础上添加人物攻击动画
效果:
步骤:
打开gameMode1准备在如下标注区域添加人物攻击动画的相关节点
1.添加一个蓝图接口
命名为轮到攻击接口
双击点击打开轮到攻击接口,函数命名为普通攻击
新建一个输出参数,命名为动画播出时间,输出类型为浮点型
然后编译保存一下
2.我们需要让玩家1添加这个蓝图接口
打开player1,点击类设置,然后在右侧点击添加接口按钮
添加刚创建的轮到攻击接口
此时在左侧接口中就会有普通攻击的事件
下面需要获取player1的蓝图
3.点击Mesh,然后点击浏览到内容浏览器中的资源,然后打开
然后打开1lantu
4.点击添加一个新函数
命名为玩家普通攻击
下面找一个攻击动画做成动画蒙太奇
5.找的是名为Cast的动画,右键点击Cast选择浏览至资源
选中Cast,然后点击鼠标右键-》创建-》创建动画蒙太奇
命名为玩家1普通攻击
6.在1lantu中播放这个蒙太奇,需要用到蒙太奇播放这个节点,Montage to Play这个参数选择刚创建的玩家1普通攻击这个动画蒙太奇
由于玩家普通攻击这个函数需要一个输出的参数,因此需要添加一个输出参数(选中玩家普通攻击,然后点击新建参数)
新建的输出参数名为播放时间,类型为浮点型
7.在player1的普通攻击这个接口中,添加如下节点,这样就可以把返回值返回到gameMode1中
8.打卡gameMode1,添加普通攻击
9.打开玩家1普通攻击这个动画蒙太奇
将插槽改选为DefaultGroup.UpperBody
此时运行游戏,效果如下:
可以看到不符合逻辑的是角色挥拳完毕后,敌人才倒下,因此应该在播放攻击的蒙太奇动画中计算伤害值,而不是等待攻击动画播放完毕后才计算伤害值,因此需要用到蒙太奇的通知功能
10.打开玩家1普通攻击这个动画蒙太奇
将时间轴调整到如下图标注区域部分,也就是角色手抬起的触碰到正前方的时候
在通知的那个轴上点击鼠标右键-》添加通知-》新建通知
命名为普通攻击通知
添加了这个通知后,动画的时间轴每次经过通知的地方,就会执行通知事件
11.在1lantu中添加普通攻击通知节点,从而调用这个通知事件
再通过如下节点,对enemy造成伤害
将类型转换为纯类型对象
但还需要知道伤害哪个对象
此时可以删除gameMode1中的如下选中的节点
12.打开1lantu的玩家普通攻击这个函数
添加一个输入
命名为角色总类,选择roleCategory的对象引用
将角色总类提升为对象
命名为目标角色
此时目标角色就可以在蓝图的事件图表中使用了
但是此时在player1中,也需要输入一个角色总类
13.打开轮到攻击接口
点击普通攻击函数,然后添加一个输入
命名为角色总类,类型为roleCategory
保存编译
此时打开player1的普通攻击函数就可以看到普通攻击有了一个角色总类的输出,将其连到玩家普通攻击的输入
14.打开gameMode1,将选中的敌人连到角色总类
此时就完成了角色攻击动画的全部内容,效果如文章开头所示。