PlayerMovementConfigSO.cs

新增 WallHangSpeed = 1f:正常抓墙(低于等于 wallGrabY,可蹬墙跳区间)的缓慢下滑速度
WallSlideSpeed 语义调整为:受限模式(高于 wallGrabY)的较快下滑速度
PlayerMovement.cs

ApplyWallSlide() 改为 ApplyWallSlide(float speed),由调用方传入对应速度
WallSlideState.cs

OnStateFixedUpdate:正常模式用 WallHangSpeed,受限模式用 WallSlideSpeed(两档清晰分离)
恢复反方向键脱离:脱离时同样调用 StartWallCoyote,wall coyote 窗口内仍能触发蹬墙跳
更新类头注释完整描述脱离方式和下滑速度档位Two wall slide improvements:
This commit is contained in:
2026-05-21 15:58:46 +08:00
parent 20b207ed58
commit fcd3e2dcdd
6 changed files with 106 additions and 26 deletions

View File

@@ -22,6 +22,20 @@ namespace BaseGames.Player.States
public override void OnStateUpdate()
{
// ── 墙壁土狼跳(优先于地面土狼跳 / 二段跳)──────────────────────────
// 离墙后 WallCoyoteTime 秒内按跳跃,视为有效蹬墙跳(背墙跳 / 对墙跳)
if (Move.HasWallCoyoteTime && Buffer.ConsumeJump())
{
var wjs = Owner.GetState<WallJumpState>();
if (wjs != null)
{
Move.ConsumeWallCoyote();
wjs.PrepareEnter(Move.WallCoyoteDir, Input.MoveInput.x);
Owner.TransitionTo(wjs);
return;
}
}
// ── 跳跃输入(郊狼跳 / 二段跳)────────────────────────────────────
// 先确认有可用跳跃机会,再消耗缓冲,避免无操作时静默吃掉输入
if ((Move.HasCoyoteTime || Owner.AirJumpsLeft > 0) && Buffer.ConsumeJump())