From 613f93c13ebe98419bdd2a61fcc832db818fda49 Mon Sep 17 00:00:00 2001 From: Joywayer Date: Fri, 12 Jun 2026 11:10:51 +0800 Subject: [PATCH] =?UTF-8?q?fix(combat):=20=E5=9C=B0=E5=88=BA=E9=97=A9?= =?UTF-8?q?=E9=94=81=E9=9A=8F=E6=8E=A5=E8=A7=A6=E5=91=A8=E6=9C=9F=E9=87=8D?= =?UTF-8?q?=E7=BD=AE=E2=80=94=E2=80=94=E6=A3=80=E6=9F=A5=E7=82=B9=E5=9B=9E?= =?UTF-8?q?=E6=BA=AF=E5=90=8E=E9=99=B7=E9=98=B1=E6=81=A2=E5=A4=8D=E7=94=9F?= =?UTF-8?q?=E6=95=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit LethalTrap._triggered 此前仅在 OnEnable 重置,存活回检查点路径 不重载场景,首次触发后陷阱永久失效。改为 OnTriggerExit2D(玩家 HurtBox 离开触发区,含传送移位)重置闩锁:同一次接触内仍只结算 一次,下一次触碰重新生效;死亡路径仍经场景重载由 OnEnable 重置。 Co-Authored-By: Claude Fable 5 --- Assets/_Game/Scripts/Combat/LethalTrap.cs | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/Assets/_Game/Scripts/Combat/LethalTrap.cs b/Assets/_Game/Scripts/Combat/LethalTrap.cs index db0b668..2b5084b 100644 --- a/Assets/_Game/Scripts/Combat/LethalTrap.cs +++ b/Assets/_Game/Scripts/Combat/LethalTrap.cs @@ -47,6 +47,11 @@ namespace BaseGames.Combat [Tooltip("true = 顶部有 HurtBox 子节点可下劈弹跳(需手动添加 Pogo Surface 子节点)")] [SerializeField] private bool _canPogo = true; + /// + /// 单次接触闩锁:防止同一次触碰内重复结算(如淡出等待期间的物理回调)。 + /// 玩家 HurtBox 离开触发区(OnTriggerExit2D,含检查点传送移位)后重置, + /// 使陷阱对下一次触碰再次生效;死亡路径则经场景重载由 OnEnable 重置。 + /// 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()