在上一节(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,将选中的敌人连到角色总类

此时就完成了角色攻击动画的全部内容,效果如文章开头所示。
发表评论