diff --git a/Scenes/Actors/IsoPlayer_FSM.tscn b/Scenes/Actors/IsoPlayer_FSM.tscn index 44fda0c6..7baabbf6 100644 --- a/Scenes/Actors/IsoPlayer_FSM.tscn +++ b/Scenes/Actors/IsoPlayer_FSM.tscn @@ -288,7 +288,6 @@ Acceleration = 150.0 Deceleration = 20.0 Gravity = -20.0 FallSpeed = 4.0 -TurnResistance = 0.8000000000029104 [node name="Storage" type="Node" parent="." node_paths=PackedStringArray("Root", "Shield")] script = ExtResource("6_habpy") diff --git a/Scripts/Components/FSM/3DPlayer/IsoMovementModule.cs b/Scripts/Components/FSM/3DPlayer/IsoMovementModule.cs index 16682a16..b2a16fef 100644 --- a/Scripts/Components/FSM/3DPlayer/IsoMovementModule.cs +++ b/Scripts/Components/FSM/3DPlayer/IsoMovementModule.cs @@ -20,7 +20,8 @@ public partial class IsoMovementModule : ModuleBase Mathf.Abs(current.X)) ? accel : decel; newX = Mathf.MoveToward(current.X, target.X, step * delta); } else { - // Opposite direction → apply resistance multiplier to deceleration - float slowStep = decel * TurnResistance; + // Opposite direction → resistance + float slowStep = decel * turnResist; newX = Mathf.MoveToward(current.X, 0, slowStep * delta); - - // Only start accelerating toward target if we've nearly stopped if (Mathf.IsZeroApprox(newX)) newX = Mathf.MoveToward(newX, target.X, accel * delta); } // --- Y Axis --- - if (Mathf.Sign(target.Y) == Mathf.Sign(current.Y) || Mathf.IsZeroApprox(current.Y)) + if (Mathf.IsZeroApprox(target.Y) && !Mathf.IsZeroApprox(current.Y)) + { + newY = Mathf.MoveToward(current.Y, 0, decel * releaseFriction * delta); + } + else if (Mathf.Sign(target.Y) == Mathf.Sign(current.Y) || Mathf.IsZeroApprox(current.Y)) { float step = (Mathf.Abs(target.Y) > Mathf.Abs(current.Y)) ? accel : decel; newY = Mathf.MoveToward(current.Y, target.Y, step * delta); } else { - float slowStep = decel * TurnResistance; + float slowStep = decel * turnResist; newY = Mathf.MoveToward(current.Y, 0, slowStep * delta); - if (Mathf.IsZeroApprox(newY)) newY = Mathf.MoveToward(newY, target.Y, accel * delta); } @@ -135,7 +141,7 @@ public partial class IsoMovementModule : ModuleBase