← 全部概念
操作手感 / 18
无敌帧
每次受击后,短暂免受伤害
交互演示
交互演示 · 移动指针或点击画面,观察变化
无敌帧(i-frames)是角色受击后持续 0.5 至 1 秒的一段保护时间,期间忽略后续伤害。没有无敌帧,一枚与角色重叠 9 帧的弹体会在这 9 帧中连续造成伤害,三枚弹体就耗尽了上方的生命条。下方角色只受伤一次,随后被击退并闪烁 1 秒;下一枚弹体从它身上穿过,却不会造成伤害。
适用场景
在受击后或闪避动作的指定帧内,设置伤害冷却时间。视觉反馈应让玩家看出自己正受到保护,而伤害系统应独立执行免伤逻辑,不依赖精灵是否可见。
实现示例
不依赖特定引擎的伪代码。请根据你使用的引擎调整函数和坐标约定。
if incomingHit and invulnerability <= 0:
health -= damage
invulnerability = 0.75
invulnerability = max(0, invulnerability - dt)
visual.visible = invulnerability <= 0 or blinkPhase(time)常见错误
只有闪烁效果并不能防止受伤。应明确哪些伤害类型可以无视无敌状态,并区分“每个目标受击后的冷却时间”与“防止同一次攻击重复命中”。
内容原作 Nicolas Zullo · 中文整理与交互改编