- Home /
Unity 2D: How can i get my sprite to rotate to the direction I am going?
I have seen many other questions on this but none seem to work. I was using transform.Translate but that meant when I rotated forwards became a different place and so it would just stop.
My code:
using UnityEngine;
using System.Collections;
public class Movement2 : MonoBehaviour {
//Inspector Variables
float playerSpeed = 0.05f; //speed player moves
void Update (){
UpAndDown();
RightAndLeft();
}
void UpAndDown (){
if(Input.GetKey("up"))
{
//transform.Translate(0,playerSpeed,0); this is the old system
transform.position = new Vector3(transform.position.x, transform.position.y + playerSpeed);
}
if(Input.GetKey("down"))
{
transform.position = new Vector3(transform.position.x, transform.position.y - playerSpeed);
}
}
void RightAndLeft (){
if(Input.GetKey("right"))
{
transform.position = new Vector3(transform.position.x + playerSpeed, transform.position.y);
}
if(Input.GetKey("left"))
{
transform.position = new Vector3(transform.position.x - playerSpeed, transform.position.y);
}
}
}
Comment
Answer by SergioSandiaz · Oct 03, 2016 at 06:01 AM
With Translate your moving, not rotating, try this
float X = Input.GetAxis("Horizontal");
float Y = Input.GetAxis("Vertical");
transform.Rotate(transform.right * X * RotateSpeed);
transform.Rotate(transform.up * Y * RotateSpeed);