feat: implement player movement controller and state machine with dash, slide, and wall-run mechanics

This commit is contained in:
DottsGit
2026-06-03 21:55:10 -04:00
parent 5726aa1043
commit da277e9d35
14 changed files with 1092 additions and 329 deletions
+36 -21
View File
@@ -5,20 +5,24 @@ class_name MovementParams
@export var walk_speed: float = 7.0
@export var sprint_speed: float = 11.0
@export var crouch_speed: float = 4.0
@export var ground_friction: float = 8.0
@export var ground_acceleration: float = 30.0
@export var ground_deceleration: float = 20.0
@export var ground_friction: float = 10.0
@export var ground_acceleration: float = 50.0
@export var ground_deceleration: float = 40.0
# ── Jump / Air ────────────────────────────────────────────────────────────────
@export var jump_velocity: float = 8.5
@export var coyote_time: float = 0.15
@export var jump_buffer: float = 0.12
@export var air_control: float = 0.3
@export var air_acceleration: float = 25.0
@export var air_control: float = 0.35
@export var air_acceleration: float = 30.0
@export var max_air_speed: float = 16.0
@export var gravity: float = 20.0
@export var fall_multiplier: float = 2.0
@export var low_jump_multiplier: float = 1.5
@export var gravity: float = 22.0
@export var fall_multiplier: float = 2.2
@export var low_jump_multiplier: float = 1.6
# ── Air Strafe (Quake-style) ──────────────────────────────────────────────────
@export var air_strafe_accel: float = 80.0
@export var air_strafe_max_gain: float = 1.0
# ── Bunny Hop ─────────────────────────────────────────────────────────────────
@export var bunny_hop_impulse: float = 1.15
@@ -27,27 +31,27 @@ class_name MovementParams
# ── Slide ─────────────────────────────────────────────────────────────────────
@export var slide_speed: float = 14.0
@export var slide_friction: float = 0.88
@export var slide_min_speed: float = 12.0
@export var slide_friction: float = 0.96
@export var slide_min_speed: float = 5.0
@export var slide_duration: float = 0.8
@export var slide_into_sprint_delay: float = 0.15
@export var slide_cooldown: float = 0.4 # Prevents rapid slide re-entry
@export var slide_jump_speed_boost: float = 1.5 # Extra m/s added when jumping out of slide
# ── Wall Run ──────────────────────────────────────────────────────────────────
@export var wall_run_speed: float = 12.0
@export var wall_run_vertical_speed: float = 8.0
@export var wall_run_vertical_speed: float = 4.0
@export var wall_run_duration: float = 1.2
@export var wall_run_gravity: float = -2.0
@export var wall_run_auto_jump_speed: float = 15.0
@export var wall_run_gravity: float = 6.0
@export var wall_run_auto_jump_speed: float = 10.0
@export var wall_run_jump_horizontal: float = 14.0
@export var wall_run_jump_off_normal: float = 9.0
@export var wall_angle_threshold: float = 70.0
@export var wall_detect_distance: float = 1.0
@export var wall_ray_up_height: float = 1.2
@export var wall_ray_down_height: float = 0.4
@export var wall_detect_distance: float = 0.7
@export var wall_ray_up_height: float = 0.6
@export var wall_ray_down_height: float = -0.3
# ── Wall Cling ────────────────────────────────────────────────────────────────
@export var wall_cling_horizontal_speed: float = 0.0
@export var wall_cling_vertical_speed: float = 0.0
@export var wall_cling_slide_speed: float = -1.5
@export var wall_cling_stamina_drain: float = 2.0
@export var wall_cling_max_stamina: float = 2.0
@@ -68,9 +72,20 @@ class_name MovementParams
# ── Double Jump ───────────────────────────────────────────────────────────────
@export var double_jump_velocity: float = 8.0
@export var double_jump_max_count: int = 1
@export var double_jump_max_count: int = 2 # 1 base jump + 1 double
# ── Chaining ──────────────────────────────────────────────────────────────────
@export var chain_bonus_per_success: float = 0.05
@export var chain_bonus_cap: float = 0.50
@export var chain_window: float = 0.4
@export var chain_window: float = 1.5
# ── Camera ────────────────────────────────────────────────────────────────────
@export var mouse_sensitivity: float = 0.002
@export var base_fov: float = 90.0
@export var sprint_fov: float = 100.0
@export var dash_fov: float = 110.0
@export var fov_lerp_speed: float = 10.0
@export var head_bob_frequency: float = 12.0
@export var head_bob_amplitude: float = 0.04
@export var wall_run_tilt_angle: float = 12.0
@export var wall_run_tilt_speed: float = 8.0