diff --git a/Assets/_Game/Scripts/Player/States/FallState.cs b/Assets/_Game/Scripts/Player/States/FallState.cs index 41ed25d..14bccdd 100644 --- a/Assets/_Game/Scripts/Player/States/FallState.cs +++ b/Assets/_Game/Scripts/Player/States/FallState.cs @@ -112,7 +112,12 @@ namespace BaseGames.Player.States if ((pressingTowardWall || Owner.IsPostWallJump) && Stats != null && Stats.HasAbility(AbilityType.WallCling)) { - _owner.TransitionTo(_owner.GetState()); + var wss = _owner.GetState(); + if (wss != null) + { + wss.PrepareEnter(wallDir); + _owner.TransitionTo(wss); + } return; } } diff --git a/Assets/_Game/Scripts/Player/States/WallSlideState.cs b/Assets/_Game/Scripts/Player/States/WallSlideState.cs index 36e9a9f..5276734 100644 --- a/Assets/_Game/Scripts/Player/States/WallSlideState.cs +++ b/Assets/_Game/Scripts/Player/States/WallSlideState.cs @@ -73,6 +73,9 @@ namespace BaseGames.Player.States if (AnimCfg?.WallSlide != null) Anim?.Play(AnimCfg.WallSlide); + // 抓墙时恢复空中冲刺次数(与蹬墙跳一致) + Owner.GetState()?.ResetDashCharge(); + // 消耗蹬墙跳后的自动抓墙标记 Owner.SetPostWallJump(false);