fix(combat): 地刺闩锁随接触周期重置——检查点回溯后陷阱恢复生效

LethalTrap._triggered 此前仅在 OnEnable 重置,存活回检查点路径
不重载场景,首次触发后陷阱永久失效。改为 OnTriggerExit2D(玩家
HurtBox 离开触发区,含传送移位)重置闩锁:同一次接触内仍只结算
一次,下一次触碰重新生效;死亡路径仍经场景重载由 OnEnable 重置。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
2026-06-12 11:10:51 +08:00
parent 64822595b3
commit 613f93c13e

View File

@@ -47,6 +47,11 @@ namespace BaseGames.Combat
[Tooltip("true = 顶部有 HurtBox 子节点可下劈弹跳(需手动添加 Pogo Surface 子节点)")]
[SerializeField] private bool _canPogo = true;
/// <summary>
/// 单次接触闩锁:防止同一次触碰内重复结算(如淡出等待期间的物理回调)。
/// 玩家 HurtBox 离开触发区OnTriggerExit2D含检查点传送移位后重置
/// 使陷阱对下一次触碰再次生效;死亡路径则经场景重载由 OnEnable 重置。
/// </summary>
private bool _triggered;
private void Awake()
@@ -102,6 +107,12 @@ namespace BaseGames.Combat
}
}
private void OnTriggerExit2D(Collider2D other)
{
if ((_playerLayers.value & (1 << other.gameObject.layer)) == 0) return;
_triggered = false;
}
#if UNITY_EDITOR
[UnityEngine.ContextMenu("打印 Pogo 提示")]
private void PrintPogoInfo()