feat(movement): add movement state machine with air/ground/wallrun/slide/dash/ground states
- MovementStateMachine: core state machine base - MovementParams: export-rich tunable resource - StateGround/StateAir: grounded & aeriel locomotion with coyote, buffered jump, bunny hop - StateWallRun / StateWallCling: wall-based traversal with wall-jump off - StateSlide: sprint-parallel slide with friction fallout - StateDash: burst dash with momentum brake - PlayerMovementController: entry point wiring to CharacterBody3D - input_map.cfg: full action map reference file - characters/player/player_base.tscn: placeholder scene - movement/tests/test_fsm_runner.gd: 9-state unit test runner Closes #1
This commit is contained in:
+114
@@ -0,0 +1,114 @@
|
||||
; Papaya-Shooter Input Map
|
||||
; Copy these into Project Settings > Input Map manually or load at runtime.
|
||||
|
||||
[jump]
|
||||
type=physical
|
||||
deadzone=0.0
|
||||
events/0=Key(Space)
|
||||
|
||||
[sprint]
|
||||
type=physical
|
||||
deadzone=0.0
|
||||
events/0=Key(Shift)
|
||||
|
||||
[crouch]
|
||||
type=physical
|
||||
deadzone=0.0
|
||||
events/0=Key(Control)
|
||||
|
||||
[dash]
|
||||
type=physical
|
||||
deadzone=0.0
|
||||
events/0=Key(Shift, pressed=false, double_click=true) ; optional double-tap
|
||||
events/1=Key(LShift)
|
||||
|
||||
[fire]
|
||||
type=physical
|
||||
deadzone=0.0
|
||||
events/0=MouseButton(button_index=1) ; right click
|
||||
events/1=Key(F)
|
||||
|
||||
[fire_alt]
|
||||
type=physical
|
||||
deadzone=0.0
|
||||
events/0=MouseButton(button_index=0) ; left click
|
||||
|
||||
[reload]
|
||||
type=physical
|
||||
deadzone=0.0
|
||||
events/0=Key(R)
|
||||
|
||||
[weapon_1]
|
||||
type=physical
|
||||
deadzone=0.0
|
||||
events/0=Key(1)
|
||||
|
||||
[weapon_2]
|
||||
type=physical
|
||||
deadzone=0.0
|
||||
events/0=Key(2)
|
||||
|
||||
[weapon_3]
|
||||
type=physical
|
||||
deadzone=0.0
|
||||
events/0=Key(3)
|
||||
|
||||
[weapon_4]
|
||||
type=physical
|
||||
deadzone=0.0
|
||||
events/0=Key(4)
|
||||
|
||||
[weapon_next]
|
||||
type=physical
|
||||
deadzone=0.0
|
||||
events/0=MouseWheel(direction=1)
|
||||
|
||||
[weapon_prev]
|
||||
type=physical
|
||||
deadzone=0.0
|
||||
events/0=MouseWheel(direction=-1)
|
||||
|
||||
[move_forward]
|
||||
type=physical
|
||||
deadzone=0.0
|
||||
events/0=Key(W)
|
||||
|
||||
[move_back]
|
||||
type=physical
|
||||
deadzone=0.0
|
||||
events/0=Key(S)
|
||||
|
||||
[move_left]
|
||||
type=physical
|
||||
deadzone=0.0
|
||||
events/0=Key(A)
|
||||
|
||||
[move_right]
|
||||
type=physical
|
||||
deadzone=0.0
|
||||
events/0=Key(D)
|
||||
|
||||
[look_x]
|
||||
type=axis
|
||||
deadzone=0.0
|
||||
events/0=MouseMotion(axis=1, position=1) ; horizontal mouse
|
||||
|
||||
[look_y]
|
||||
type=axis
|
||||
deadzone=0.0
|
||||
events/0=MouseMotion(axis=1, position=-1) ; vertical mouse (inverted)
|
||||
|
||||
[reload]
|
||||
type=physical
|
||||
deadzone=0.0
|
||||
events/0=Key(R)
|
||||
|
||||
[interact]
|
||||
type=physical
|
||||
deadzone=0.0
|
||||
events/0=Key(E)
|
||||
|
||||
[jump]
|
||||
type=physical
|
||||
deadzone=0.0
|
||||
events/0=Key(Space)
|
||||
Reference in New Issue
Block a user