UE4 RPG游戏实战开发(三):连招攻击

lxf2023-04-19 19:56:01

武器攻击

上文实现了角色装备武器的功能,有了武器就应该要展示一下武器的攻击招式了,接下来咱们就来实现一个武器连招攻击的效果。

准备 Combo 动画

还是在 Mixmao 上去准备下载几个连招的动画,这里我下载了这几个招式:

UE4 RPG游戏实战开发(三):连招攻击

UE4 RPG游戏实战开发(三):连招攻击

完成 Combo 状态机

打开动画蓝图,依次添加三个状态:Attack1, Attack2, Attack3 代表三个连招动作,如图:

UE4 RPG游戏实战开发(三):连招攻击

然后创建三个 bool 变量:Combo1, Combo2, Combo3 来表示招式之间的切换.再创建一个 bool 变量 ComboSaved 来表示连招的状态,如果是 false 则结束连招,回到手持武器的动画状态。

UE4 RPG游戏实战开发(三):连招攻击

每个状态的详细蓝图如下:

Attack1

UE4 RPG游戏实战开发(三):连招攻击

Attack2

UE4 RPG游戏实战开发(三):连招攻击

Attack3

UE4 RPG游戏实战开发(三):连招攻击

Transition 状态

UE4 RPG游戏实战开发(三):连招攻击

UE4 RPG游戏实战开发(三):连招攻击

UE4 RPG游戏实战开发(三):连招攻击

UE4 RPG游戏实战开发(三):连招攻击

UE4 RPG游戏实战开发(三):连招攻击

鼠标攻击事件

打开角色蓝图,与动画蓝图一样创建用于标识连招切换的三个 bool 变量, Combo1, Combo2, Combo3 和状态 ComboSaved 变量。这些变量将与动画蓝图中创建的变量相关联,下文中会讲述到。

再创建一个 int 变量 AtkCombo,用于标识招式, 例如当 AtkCombo = 0 时,播放 Slash 动画,当 AtkCombo = 2 时,播放踢腿动画等等。

再创建一个 bool 变量 CanAttack 用于表示能否进行攻击,默认值设置为 true。

UE4 RPG游戏实战开发(三):连招攻击

在工程设置中添加鼠标左键点击事件,函数名称为 Attack,在角色蓝图中 调用 Attack 函数,然后构建其蓝图逻辑。

  1. 判断是否手持武器
  2. 判断 CanAttack 是否为 true
  3. 当 CanAttack 为 true 时,接下来先把 CanAttack 设置为 false 避免鼠标左键一直可以点击
  4. 设置 ComboSaved 为 true, 并根据 AtkCombo 的值来设置 Combo1, Combo2, Combo3 的状态,当 Combo1 执行完后,AtkCombo + 1, 当 Combo3 执行完后 AtkCombo = 0

蓝图如下:

UE4 RPG游戏实战开发(三):连招攻击

当连招结束后需要重置这些变量,创建一个函数 ResetAttack, 蓝图如下:

UE4 RPG游戏实战开发(三):连招攻击

动画消息通知

角色在施展连招动画的时候也得需要有个通知,告诉何时动画播放完毕,何时可以进行下一个连招,所以在招式的动画中,需加入 ResumeAttack 和 ResetAttack 俩个消息。

招式一 UE4 RPG游戏实战开发(三):连招攻击

招式二 UE4 RPG游戏实战开发(三):连招攻击

招式三 UE4 RPG游戏实战开发(三):连招攻击

在动画蓝图的 Event Graph 中去关联上文中所创建的那些参数以及函数:

UE4 RPG游戏实战开发(三):连招攻击

UE4 RPG游戏实战开发(三):连招攻击

保存并编译,回到编辑器中运行,角色就可以施展连招了。

UE4 RPG游戏实战开发(三):连招攻击

获取工程

搜索 HelloWorld杰少 回复关键字 'RPG' 获取完整的工程。

我是杰少,如果您觉的我写的不错,那请给我 点赞+评论+收藏 后再走哦!

往期文章:

  • UE4 RPG游戏实战开发(二):装备武器
  • UE4 RPG游戏实战开发(一)
  • UE4 如何用命令行来打包你的游戏
  • UE4:来为我们的角色制作一个血条吧
  • 使用 Google Breakpad 来助力解决程序崩溃
  • UE4 多人游戏服务器探索
  • 使用虚幻引擎自动化工具实现自动化部署
  • 如何在 UE4 中制作一扇自动开启的大门
  • 如何在 UE4 中用代码去控制角色移动
  • 如何给 UE4 场景添加游戏角色
  • UE4:Android 平台开发实践指南
  • UE4 开发避坑指南(持续更新)

请你喝杯 ☕️ 点赞 + 关注哦~

  1. 阅读完记得给我点个赞哦,有