From 33b6db979e2ac7d64ddb869281ec6d37ed5e3a8c Mon Sep 17 00:00:00 2001 From: VinPropane Date: Sun, 12 Apr 2026 18:47:38 -0400 Subject: [PATCH] =?UTF-8?q?NEON-29:=20Stair=20descent=20=E2=80=94=20tighte?= =?UTF-8?q?r=20continuation=20probe=20+=20stronger=20vertical=20accel?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Lower WALK_CONTINUATION_MAX_BELOW_FEET to 0.078 m (under ~0.104 m treads) so the next tread is not treated as forward walk support; ledge peel runs on descents and pulls down onto each step instead of gliding with weak air gravity. Raise PLAYER_VERTICAL_ACCEL_MULTIPLIER to 9× for peel, walk-air, and idle-air. --- client/scripts/player.gd | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/client/scripts/player.gd b/client/scripts/player.gd index 3e20d4e..838f119 100644 --- a/client/scripts/player.gd +++ b/client/scripts/player.gd @@ -75,11 +75,12 @@ const WALK_STEP_ASSIST_MAX_SURFACE_DELTA: float = 0.35 ## Down-ray length under the capsule foot disk while walking (~[member NavigationMesh.agent_max_climb]). const WALK_SUPPORT_PROBE_DEPTH: float = 0.32 const WALK_SUPPORT_PROBE_MIN_UP_DOT: float = 0.42 -## Ignore ray hits farther below the feet than this (m). Prototype tread rise is ~0.104 m; without -## this cap, a probe over a **void** still reaches the **main floor** (~0.3 m down from a gold step) -## and reads as “forward support”, so snap + lip [code]is_on_floor()[/code] keep the capsule skating -## at deck height until XZ arrival. -const WALK_CONTINUATION_MAX_BELOW_FEET: float = 0.14 +## Ignore ray hits farther below the feet than this (m). Must stay **below** approach tread rise +## (~0.104 m in [code]main.tscn[/code]): if the next tread counts as “continuation”, [method _walk_has_close_floor_probe_below] +## stays true on stairs while [code]is_on_floor()[/code] flickers — ledge peel never runs and the capsule +## glides horizontally with only weak airborne gravity. Still below a full gold→floor drop (~0.3 m) so +## void probes toward the slab reject the lower hit. +const WALK_CONTINUATION_MAX_BELOW_FEET: float = 0.078 ## If capsule feet are farther above the click’s surface Y than this, always use walk gravity + zero ## moving snap (rays can still read “support” while [method CharacterBody3D.is_on_floor] hugs a lip). ## ~0.42 m: **TerracePlatformB** top (~0.6 m) → floor (0) qualifies; **TerraceStepB** (~0.3 m) → floor does @@ -87,9 +88,8 @@ const WALK_CONTINUATION_MAX_BELOW_FEET: float = 0.14 const WALK_DEEP_DESCENT_FEET_ABOVE_GOAL: float = 0.42 ## [method get_gravity] can be ~0 with missing/odd project defaults; ledge peel + airborne walk still need a pull. const WALK_FALLBACK_GRAVITY_Y: float = -9.81 -## Multiplier on project gravity for walk ledge peel, walk-airborne, and idle-airborne — snappier than -## real-world 9.81 m/s² for prototype feel; also offsets move_and_collide step coarseness at 120 Hz. -const PLAYER_VERTICAL_ACCEL_MULTIPLIER: float = 2.45 +## Multiplier on project gravity for walk ledge peel, walk-airborne, and idle-airborne (arcade descent). +const PLAYER_VERTICAL_ACCEL_MULTIPLIER: float = 9.0 ## CapsuleShape3D in scene: height = 1.0 (cylinder portion), radius = 0.4. ## Total half-height from body origin to physical bottom = 0.5 + 0.4 = 0.9 ## (`CAPSULE_HALF_HEIGHT + PLAYER_CAPSULE_RADIUS`).