Animating sliding door, rotation problem


So I have a door prefab that I made which consists of a parent object and its 2 children, the left and right door, my intention is to create an elevator door.

I’m using a script in unity to animate the sliding doors with the following line of code.

LeftDoor.transform.Translate(Vector3.left * DoorSpeed * Time.deltaTime);

The problem occurs when I change the rotation of the door, since I only want to move the door 2 world units I check the x axis and stop when that position is equal to the original position of the door + 2. But that’s not going to work if I rotate the door then I might have to check the Z axis instead and if I rotate the door 35 degrees or something else that’s not entirely straight it’s not going to work at all.

I could just do the animation in Blender but I feel that it’s a lot more flexible to do these simple animations in Unity.

I’m looking for a way to move a transform in unity a specified number of world units regardless of its rotation.


If you want to move an object in world coordinates, add Space.World to the transform.Translate:

LeftDoor.transform.Translate(-Vector3.right * DoorSpeed * Time.deltaTime, Space.World);

(there is no Vector3.left…)

Although I don’t get why you would want to move sliding doors in world space. The movement should be in relation to the elevator’s rotation, so Space.Self (the default behavior of transform.Translate) should be the way to go…

there is an example of that on angybots which can be found at assest stor for free