How can I make the character able to lie down and crawl?

I need to be able to lie down and crawl forward in my first-person game. Could you please help me, or maybe there’s a guide I haven’t found yet?

You can just use the built-in crouching feature as crawling. Simply select the character movement component on the Components window which should be on the top left by default, then navigate to the Details window which should be on the top right by default while the component is selected, type in “Crouch” into the search bar inside the Details window, tick the checkbox next to the setting called “Can Crouch”, and adjust the Crouched Half Height & Max Walk Speed Crouched settings to your liking. Then you can trigger the Crouch and Un Crouch functions on user input.

This can also be a custom movement mode btw if you want to keep crouching as it is, where the character slightly bends down instead of fully laying on the ground. But you’d need to define that using C++.


Alternatively you can use the Set Capsule Half Height node. Just set the capsule half height to a low value when the input for crawling gets executed and set it back to it’s normal value when you want to get back up.

Hope this helps! :blush:

What should I do if I can’t crouch below 30 cm?

Try lowering the capsule radius by clicking on it from the Components window, then navigating to the Details window while it’s selected and adjusting the setting to your liking.

Because of this, I’ll end up permanently small.

It doesn’t need to be permanent, you can also do that by using the Set Capsule Radius node :slightly_smiling_face:

Or you can just lower the camera height and use a collision volume (sphere, capsule, box) to detect hits / overlaps while the character is crawling.

Thank you, this helped, but a new problem has come up: when I crouch, the footstep sound disappears. What should I do about this?

It should be about how you trigger the sounds and requires further investigation on your related blueprints.



I think your sphere traces doesn’t collide with the ground due to the reduced capsule size, which you can confirm by drawing debug spheres. Try manually inserting values into the Sphere Trace by Channel node. Again, you can make those values dynamic by storing them inside variables.