返回 导航

UE5

hangge.com

UE5 - 角色耐力系统实现详解2(奔跑时体力逐渐减少,停止时恢复体力)

作者:hangge | 2026-09-13 10:02
    在前文中我们制作了体力条 UI 并与角色体力值绑定(点击查看),本文继续将耐力系统与角色的奔跑结合起来。即奔跑时角色的体力会逐渐减少,当变为 0 时则无法继续跑动,只能行走。而当角色行走或站立不动时可用自动逐渐恢复体力。

二、奔跑时体力逐渐减少,停止时恢复体力

1,创建变量

(1)打开“BP_ControlledCharacter”角色蓝图,首先我们需要创建一些变量去检测玩家是否在冲刺,冲刺需要消耗多少体力,以及体力恢复率。

(2)各具体变量如下:
  • IsRuning(布尔型,默认值为 false):表示角色是否在奔跑
  • StaminaDrain(浮点型,默认值为 2):表示计时器每次调用消耗 2 点体力
  • StaminaRecharge(浮点型,默认值为 5):表示计时器每次恢复消耗 5 点体力
  • StaminaDrainAndRechargeTime(浮点型,默认值为 0.2):表示每隔 0.2 秒进行一次体力消耗或者恢复
  • RunSpeed(浮点型,默认值为 800):表示角色奔跑时的速度
  • WalkSpeed(浮点型,默认值为 200):表示角色行走时的速度

2,创建 StopRunning 宏(停止奔跑)

(1)在“我的蓝图”面板中单击“宏”类别中的加号按钮以创建宏。将宏的名称更改为 StopRunning。默认情况下,宏没有执行引脚,我们需要为其添加参数。选择创建的宏:
  • 在“细节” 面板的“输入”区域创建一个名为 In 的“执行”类型的输人参数
  • 在“输出”区域创建一个名为 Out 的“执行”类型的输出参数

(2)该宏作用是停止角色奔跑,具体逻辑如下:

3,创建 StartRunning 宏(开始奔跑)

(1)在“我的蓝图”面板中单击“宏”类别中的加号按钮以创建宏。将宏的名称更改为 StartRunning。默认情况下,宏没有执行引脚,我们需要为其添加参数。选择创建的宏:
  • 在“细节” 面板的“输入”区域创建一个名为 In 的“执行”类型的输人参数
  • 在“输出”区域创建一个名为 Out 的“执行”类型的输出参数

(2)该宏作用是使角色开始奔跑,前半部分与 StopRunning 儿乎相同,只是使用适当的值。Branch 节点将检查是否已经启动了定时调用 ManageStamina 事件的计时器。如果已启动,则完成并退出。如果计时器尚不存在,则设置该计时器。 ManageStamina 是我们自定义的事件,会更加角色当前状态对体力值进行加减,具体后文会详细说明。

4,创建 ManageStaminaDrain 宏(消耗体力)

(1)在“我的蓝图”面板中单击“宏”类别中的加号按钮以创建宏。将宏的名称更改为 ManageStaminaDrain。默认情况下,宏没有执行引脚,我们需要为其添加参数。选择创建的宏:
  • 在“细节” 面板的“输入”区域创建一个名为 In 的“执行”类型的输人参数
  • 在“输出”区域创建一个名为 Out 的“执行”类型的输出参数

(2)该宏用于消耗玩家的体力,并检查是否存在停止冲刺的条件,如果存在则调用 StopRunning 宏停止奔跑。

5,创建 ManageStaminaRecharge 宏(恢复体力)

(1)在“我的蓝图”面板中单击“宏”类别中的加号按钮以创建宏。将宏的名称更改为 ManageStaminaRecharge。默认情况下,宏没有执行引脚,我们需要为其添加参数。选择创建的宏:
  • 在“细节” 面板的“输入”区域创建一个名为 In 的“执行”类型的输人参数
  • 在“输出”区域创建一个名为 Out 的“执行”类型的输出参数

(2)该宏用于对角色体力进行恢复,直至体力值恢复至最大值。并且当体力达到满值时,会清除定时调用 ManageStamina 事件的计时器。

6,创建 ManageStamina 自定义事件(消耗或恢复体力)

    前面计时器定时调用的 ManageStamina 事件逻辑如下,该事件会检查玩家是否在奔跑,并调用相应的宏来消耗体力或对其恢复。 

7,应用新的耐力系统

之前逻辑我们按下左 Shift 键就奔跑,松开则变为行走。下面对其逻辑进行如下改进:
  • 当按下 Shift 键时,游戏会检查玩家是否有足够的耐力开始奔跑,即当前玩家耐力值是否大于或等于 StaminaDrain。如果玩家有足够的耐力开始奔跑,则会调用 StartRunning 宏。
  • 当松开 Shift 键时,将调用 StopRunning 宏。 

8,运行测试

(1)运行游戏,但我们按下 shift 键控制角色进行奔跑时,体力值会逐渐减少,当降为 0 时就无法奔跑。

(2)当停止奔跑后,角色体力值又会逐渐恢复。
评论

全部评论(0)

回到顶部