fix(combat): 地刺闩锁随接触周期重置——检查点回溯后陷阱恢复生效
LethalTrap._triggered 此前仅在 OnEnable 重置,存活回检查点路径 不重载场景,首次触发后陷阱永久失效。改为 OnTriggerExit2D(玩家 HurtBox 离开触发区,含传送移位)重置闩锁:同一次接触内仍只结算 一次,下一次触碰重新生效;死亡路径仍经场景重载由 OnEnable 重置。 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user