For anyone struggling with stairs in Godot, at least in 4.1.1, you can easily fix it by adding another CollisionShape3D to your CharacterBody3D node and use a SeparationRayShape3D as its shape. From there, move the new CollisionShape3D to the height of the step and set its length to the difference between it and the floor and rotate the CollisionShape3D to point it down towards the floor. Make sure if you have another collider on your CharacterBody3D that you move it or shrink it to be just above the new CollisionShape3D.
Basically, if you have a capsule for your player and the floor is -1 from the transform.origin of the player node, set your new CollisionShape3D to whatever the maximum height of your step will be above the floor and the length to that height as well.
It'll pretty much work instantly after that as the SeparationRayShape3D will push your CharacterBody3D up to the level of the step once it collides with it. It makes for a pretty simple way to handle stairs and you should be able to tweak it to how you need it.
I might make an actual tutorial video on how to do this as I have not found just a straightforward example of how this works. We have to share our knowledge so we can all grow and build the games we want to build.
2 comments