Handling Stairs

Is there a good tutorial/simple way to handle moving an FPS rig up some stairs/ramp/bump?

I think I can figure it out if I use 3-4 sensors, but want to see if there is a much easier way.

I did notice there is a “Character” physics type now that includes steps, but blender crashes whenever I switch from dynamic to character.

Well, are you using animation keys or an Ik rig in realtime or?

what type of rig is it?

Make a ramp using an invisible plane and put it over any bumps/steps. Then turn the physics of the stairs/bumps to “No Collision”.

Here’s a .blend:
stairs_ex.blend (436 KB)
Just press P and watch.

This is how most games do their stairs, especially FPS games. It cuts down the collision and logic calculations and it’s unnoticeable.


Only in multiplayer does it become an issue,
watching a persons feet hover /go into stairs is anoying

check out elipsis

Thanks guys, now just need to do some work to make sure it doesn’t slide back down, the ramp option is more than good enough for me :smiley:

turn friction way up if you stop moving unless the surface is marked “slick”??

if you had each “collision” with the stair trigger a small set of motions for your player, like up, up forward, forward for a X stair, then your player would automagically “walk” up the stair,

in logic

In “step detector” — a small cube sensor above floor and just in front of player
collision “stair”-------------and-------------Message Player Subject Stair

and in player
message “Stair”------------------------------and---------------Assign property X=1
if X=0(state check)-------------------------/
property+interval(if X=>1 while X<9)-and---------------X=X+1 (Add property)
if property = 10---------------------------and---------------X=0
if X = 2 --------------------------and----------------------------(motion frame 1)
if X = 3 --------------------------and----------------------------(motion frame 2)
if X = 4 --------------------------and----------------------------(motion frame 3)

and so on,

if X = 0 -------------------------and ------------------------------do stuff

this is a for loop in logic triggered by a collision :slight_smile:
somewhere in other controls for movement etc you need the following so when you are going up stairs you can’t stop during a step, so in other words, you will move up one step at a time, and stay at each step unless you move forward into the stair close enough to trigger the walk,or you could make a cancel system, that would stop your motion, and then ping pong backward through the motions negatively, but would take 2 times the nodes

attached is a generic for loop triggered by a message from another object :slight_smile:


CodeItAll.blend (522 KB)