- Home /
How to make my sprite face way Im walking
Here is my code. How come this isnt working?
var side : UnityEngine.Texture;
var moveDown : KeyCode;
var moveUp : KeyCode;
var moveLeft : KeyCode;
var moveRight : KeyCode;
var speed : float = 10;
function Update () {
if (Input.GetKey(moveUp)){
rigidbody2D.velocity.y = speed;
}
else if(Input.GetKey(moveDown)){
rigidbody2D.velocity.y = speed * -1;
}
else{
rigidbody2D.velocity.y = 0;
}
if(Input.GetKey(moveRight)){
rigidbody2D.velocity.x = speed;
renderer.material.mainTexture = side;
}
else if(Input.GetKey(moveLeft)){
rigidbody2D.velocity.x = speed * -1;
}
else{
rigidbody2D.velocity.x = 0;
}
}
Comment
Answer by Daemonhahn · Dec 23, 2013 at 11:54 PM
I was trying to do the same thing, and i've finally figured out how to do it!
// move forward relative to angle
void RelativeForward()
{
Vector3 relativeUp = transform.TransformDirection (Vector3.up);
rigidbody2D.AddForce(new Vector2(relativeUp.x, relativeUp.y)*speed);
}
// move backwards relative to angle
void RelativeBackward()
{
Vector3 relativeDown = transform.TransformDirection (Vector3.down);
rigidbody2D.AddForce(new Vector2(relativeDown.x, relativeDown.y) * speed);
}
// rotate left
void RotateLeft()
{
transform.Rotate(Vector3.forward *rotationSpeed);
}
// rotate right
void RotateRight()
{
transform.Rotate (Vector3.forward *(-rotationSpeed));
}
then you just call rotateRight when pressing D or right arrow, relative forward when pressing w etc. make sure you call them inside of fixed update if your using rigidbodies or your physics will break.
hope this helps, sorry for my rushed response, if you still have problems message back and ill give a more in depth response!