- Home /
2.5D Stairs platformer problem
I am trying to recreate the situation you find in some 2d platformers where the player can walk up stairs and then turn around and head the other way but not go back down the stairs. Sometimes the player can press down while moving and then lets them take the stairs if they want to go back down.
I was wondering what the common or best method people use to solve this problem was.
A picture illustrates what I mean below. The green block is the player. 
Thanks for any help anyone can provide!
Answer by JulianSpillane · Mar 26, 2012 at 03:24 PM
I would create a trigger at the top of your staircase along with a script that contains an OnTriggerStay method that checks against your player input.
For example:
C#
void OnTriggerStay( Collider other )
{
// if the player is already on the stairs, bail out
if( Player.IsOnStairs )
return;
// check to see if down is being held and the player is moving
// in the direction of the stairs (a la Castlevania)
if( Input.GetAxis("Vertical") < 0 && Player.MovementDir == this.Direction )
{
// change player state to stair mode
MyPlayerObject.SetOnStairs( this ); // or whatever your code for that is...
}
}
Obviously you need to use your own methods for the behaviour you want, but the principle is there. For actually moving up and down, I'd constrain your character controller to a path that runs in the direction of your stairs when in 'stair mode'.
Another option could be to disable collision with the floor to drop the player on to the stairs and then re-enable collisions when the player has cleared the trigger (OnTriggerExit), though the path method above would give you more control.
Your answer
Follow this Question
Related Questions
Player movement boudaries in 2D 1 Answer
Top down movement and rotation 2 Answers
Uneven speed in 2d movement script 2 Answers
How can I make a non-player character (rigidbody) move when they touch the ground? 1 Answer
Top-Down Movement in Unity 1 Answer