- Home /
Question by
matta9001 · Mar 08, 2014 at 05:48 AM ·
javascriptanimatornoob
Translate Globally rather than locally
So i wrote a script to make it so that i can control a space ship left and right. And its not the best script but then again i'm pretty new to this so don't be suprised if it is bad. But since i have an animation that also plays when it moves it changes the axis along with the animation, so instead of going to the left it goes in a circle. Here is the script #pragma strict
var isIdle = true;
var isLeft = false;
var isRight = false;
function Update () {
var translation : float = Time.deltaTime * 5;
gameObject.animation.wrapMode = WrapMode.Loop;
if (Input.GetKeyDown(KeyCode.A)){
isIdle = false;
isLeft = true;
isRight = false;
}
if (Input.GetKeyDown(KeyCode.D)){
isIdle = false;
isLeft = false;
isRight = true;
}
if (Input.GetKeyUp(KeyCode.A)){
isIdle = true;
isLeft = false;
isRight = false;
}
if (Input.GetKeyUp(KeyCode.D)){
isIdle = true;
isLeft = false;
isRight = false;
}
if (isIdle == true) {
gameObject.animation.Play("Idle");
}
if (isLeft == true){
gameObject.animation.Play("MoveLeft");
transform.Translate (translation,0,0);
}
if (isRight == true){
gameObject.animation.Play("MoveRight");
transform.Translate (0,0,translation);
}
help?
Comment
Best Answer
Answer by robertbu · Mar 08, 2014 at 06:52 AM
You can change Transform.Translate() to use world coordinates by adding the Space.World parameter:
transform.Translate (0,0,translation, Space.World);
Or you can calculate the position directly:
transform.position += Vector3(0,0,translation);
Or even:
transform.position.z += translation;