2D - Locking The Z Axis

So, I'm making a 2D Platformer. I've been able to add some nifty features, but lately I've run into a problem. I would like my character to only move on the X and Y axis without any movement in the Z axis. Everytime I collide with a box, my character falls off the platform on the Z axis which I don't want. I've heard about configurable joints, but I'm still unclear about this all.

Thanks In Advance

This question has been answered in multiple places before. There are 2 common solutions. One, in your player code, every frame call:

//JS
function Update () {
    transform.position.z = 0;
}


//C#
//using UnityEngine... public class...
void Update () {
     Vector3 pos = transform.position;
     pos.z = 0;
     transform.position = pos;
}

or you can add a configurable joint. Then go to z motion and choose locked instead of free or limited.

Other links.

Locking desired axis

thanks man this helped me so much since my game had a majour bug that made it that if you landed right you’d be sendt off of the map so I had to add barriers but you could use those barriers to jumo infinitely

Hi, I’m trying to do a similar thing, but I’m just wondering if its possible to make a script that instead of saying “continuously set z to 0” it would say something like “the z can never change to be anything other than 0 in the first place”. Its because if I use this script and I walk into a collider thats facing diagonally (i’m making a 2.5d game, and ill try to not have any diagonal colliders, but it might not be completely possible), you can glitch through it, and it goes all messed up.

See http://forum.unity3d.com/threads/restrict-z-movement-on-character-controller-without-breaking-into-colliders.91358/