-
-
Notifications
You must be signed in to change notification settings - Fork 101
Description
Describe the project you are working on
Character controller for Godot
Describe the problem or limitation you are having in your project
For any type of movement that requires a kinematic rigidbody, a stair test should be built-in to the move_and_slide function, allowing the user to:
- Specify a step height that determines if a step is low enough to smoothly climb or is a wall that cannot be climbed.
- Up and down stairs without losing contact, similar to how move_and_slide_with_snap works.
Describe the feature / enhancement and how it helps to overcome the problem or limitation
Step up distance: Any stable surface below this height will be walkable by the character.
Step down distance: When losing contact with the ground, if the distance between the character and the ground is less or equal to this value, then the character will be automatically grounded (sticking to the ground). If there is no ground at all, then the character will be not grounded.
Describe how your proposal will work, with code, pseudo-code, mock-ups, and/or diagrams
The user would specify the if smooth stepping up and down stairs is enabled, and the step height:
Vector3 move_and_slide ( Vector3 linear_velocity, Vector3 up_direction=Vector3( 0, 0, 0 ), bool stop_on_slope=false, int max_slides=4, float floor_max_angle=0.785398, bool infinite_inertia=true, smooth_step=true, step_height=4 )
It would also work with move_and_slide_with_snap:
Vector3 move_and_slide_with_snap ( Vector3 linear_velocity, Vector3 snap, Vector3 up_direction=Vector3( 0, 0, 0 ), bool stop_on_slope=false, int max_slides=4, float floor_max_angle=0.785398, bool infinite_inertia=true, smooth_step=true, step_height=4 )
If this enhancement will not be used often, can it be worked around with a few lines of script?
No, it would need to be integrated to move_and_slide.
Is there a reason why this should be core and not an add-on in the asset library?
It would need to be implemented in the kinematic body engine code.