UE Blueprint交互物体时生命值仅扣一次 如何实现交互期间持续扣血?
问题根因
你当前的逻辑仅在OnComponentBeginOverlap(碰撞开始)事件触发时执行一次扣血,该事件只会在玩家首次进入物体碰撞范围的单帧运行,因此无法实现持续扣血效果。
修复方案
方案1:定时器实现(性能更优,推荐)
- 在
OnComponentBeginOverlap节点后连接Set Timer by Event节点:- 将扣血逻辑连接到定时器的触发事件引脚
- 时间参数设置为期望的扣血间隔(例:填0.5代表每0.5秒扣一次血)
- 勾选「循环」选项
- 将节点返回的定时器句柄存储到自定义变量
DamageTimerHandle中
- 在
OnComponentEndOverlap(碰撞结束)节点后连接Clear Timer by Handle节点,传入存储的DamageTimerHandle,碰撞结束时会立刻停止扣血 - 额外补充:玩家生命值归零时需额外增加清除定时器的逻辑,避免空指针报错
方案2:Tick+状态标记实现
- 新建布尔类型变量
bIsOverlapping,默认值为false OnComponentBeginOverlap触发时将bIsOverlapping设为trueOnComponentEndOverlap触发时将bIsOverlapping设为false- 连接
Event Tick节点到分支判断,bIsOverlapping为true时执行扣血逻辑,可搭配Delta Seconds计算控制扣血频率,避免每帧扣血导致数值下降过快
参考蓝图

内容的提问来源于stack exchange,提问作者Froyleduckle Gaming
相关产品推荐
相关产品推荐

