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

more ▼

asked Jun 26, 2010 at 01:46 PM

Flipbee9 gravatar image

88 47 40 44

(comments are locked)
10|3000 characters needed characters left

2 answers: sort voted first

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

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

//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

more ▼

answered Jun 26, 2010 at 01:55 PM

Peter G gravatar image

Peter G
17.7k 30 65 164

Thanks for the quick response :D

Jun 26, 2010 at 01:57 PM Flipbee9

@Peter G, one minor point - that's Javascript. In C# you can't assign to Z, you have to do: transform.position = new Vector3(x, y, 0)

Jun 27, 2010 at 06:26 PM Cyclops

Right, I'll post the C# version. Most newcomers seem to choose JS because all the documentation is JS so I write it as such.

Jun 27, 2010 at 08:06 PM Peter G

@Peter G, true, I wasn't suggesting you change the post, I figured anyone seeing the post would also see my comment, which would be enough notice. :)

Jun 27, 2010 at 10:38 PM Cyclops

The C# script completely froze my character so that it wouldn't move in any direction. Anyone know why? I created a C# script with only the contents above and attached it to my gameObject (character controller).

Mar 26, 2012 at 10:36 PM amaranth
(comments are locked)
10|3000 characters needed characters left

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.

more ▼

answered Sep 29, 2013 at 06:14 PM

Gumpert gravatar image

16 3 8 8

(comments are locked)
10|3000 characters needed characters left
Your answer
toggle preview:

Up to 2 attachments (including images) can be used with a maximum of 524.3 kB each and 1.0 MB total.

Follow this question

By Email:

Once you sign in you will be able to subscribe for any updates here



Answers and Comments



asked: Jun 26, 2010 at 01:46 PM

Seen: 11697 times

Last Updated: Sep 29, 2013 at 06:14 PM