UE5 - 野狼捕猎游戏制作教程5(给野狼添加攻击操作)
作者:hangge | 2026-09-23 09:24
五、给野狼添加攻击操作
1,添加输入映射和碰撞通道
(1)打开“项目设置”窗口,在“引擎-输入”卷展栏中添加一个新的“操作映射”并命名为“AttackButton”,设置“按键”为“鼠标左键”。

(2)在“引擎-碰撞”下的“Trace Channels”卷展栏中单击“新建检测通道”按钮新建一个通道,设置“命名”为“Attack”,“默认响应”为“Ignore”,完成后单击“接受”按钮接受。

2,创建动画蒙太奇
(1)我们可以利用蒙太奇功能为狼添加攻击操作。在“AnimalVanietyPack > Wolf > Animations”文件夹中找到“ANIM_Wolf_RunBite_RM”动画,双击打开该动画,可以看到该动画是狼在边奔跑边撕咬的动画。

(2)打开后在“资产详情”面板中勾选“启用根运动”选项,让动画在播放时可以将根的位移应用到“角色”类上。

(3)使用鼠标右键单击“ANIM_Wolf_RunBite_RM”动画,执行“创建 > 创建动画蒙太奇”菜单命令,传教一个名为“ANIM_Wolf_RunBite_RM_Montage”的动画蒙太奇。

(4)进入“ANIM_Wolf_RunBite_RM_Montage”动画蒙太奇,在“1”轨道中单击鼠标右键,执行“添加通知 > 新建通知”菜单命令新建一个通知并命名为“AttackEnd”,将通知放置在结束撕咬处,用来刷新动画播放条件。同时在狼准备撕咬时新建一个通知并命名为“Attack”,用来检测是否攻击到目标。

(5)在“资产详情”面板中设置“混入”的“混合时间”为 0.1。这样可以使狼从正常姿态到攻击状态的过渡时间变短,并使攻击动画更完整、更有力量感。

3,修改角色蓝图
(1)进入“BP_CharacterBase”,新建一个“布尔”型变量并命名为“CanAttack”变量,编译后在“细节"面板中勾选“CanAttack”选项将默认值设置为 True。

(2)接着在“事件图表”面板中添加“AttackButton”输入操作,并通过“CanAttack”变量值判断是否播放动画蒙太奇。

(3)然后新建一个“事件任意伤害”节点,“事件任意伤害”节点就是接收伤害的节点,在接收伤害时设置自身的生命值为自身生命值减去伤害值。同时为了又更好的视觉效果,收到伤害时还会播放喷血特效。
提示:
- “事件任意伤害”节点是 Unreal Engine 5 中的封装事件节点,可以方便对 Actor 类发送伤害并使 Actor 类接收伤害。
- 喷血粒子特效“P_Blood_Splat_Cone”来自“Realistic Starter VFX Pack Vol 2”这个免费资源库,具体介绍安装步骤可以参考我之前写的文章(点击查看)

(4)最后选择胶囊体组件,设置“碰撞预设”为“Custom”,勾选“Attck”通道的“阻挡”选项。

4,修改动画蓝图
(1)进入“Anim_Wolf”蓝图的“动画图表”面板,新建一个“Slot'DefaultSlot'”节点,它位于状态机与“输出姿势”节点中间。

(2)进入“事件图表”面板,新建一个“AnimNotify_AttackEnd”动画通知,使用“SET”节点从“类型转换为 BP_CharacterBase”节点中获得角色的“CanAttack”布尔值将其设置为真,表示攻击动画结束后又可以继续发起攻击。

(3)接着将“AnimNotify_Attack”动画通知创建到“事件图表”面板中,然后添加如下逻辑进行攻击判定:
- 得到“Cast To BP_CharacterBase”转换节点引用引脚的位置与向前向量,添加“获取 Actor 向前向量”节点并用“乘”节点乘以 300.0 后将其与“获取 Actor 位置”节点相加,使用“按通道进行球体追踪”节点分别连接“获取 Actor 位置”节点与计算结果到“Start”和“End”引脚。
- 接着设置“按通道进行球体追踪”节点的“Radius”为 40.0,“Trace Channel”为“Attack”,使用“分支”节点与“中断命中结果"节点分别连接“按通道进行球体追踪”节点的“ReturmValue”和“OutHit”引脚,设置“BaseDamage”为 25.0,代表 1 次攻击造成 25 点伤害。


5,运行测试
(1)为方便测试攻击以及收到攻击后的效果,我们拖拽多个“BP_Wolf”到关卡中。

(2)运行程序后,我们控制狼移动到其他狼的旁边,按下鼠标左键就可以发动攻击。

(3)两次攻击后目标便会死亡倒地。

全部评论(0)