Im sorry for the noob question but im trying to get into programing. i have this simple movement code
using UnityEngine;
using System.Collections;
public class PlayerMove : MonoBehaviour {
public float moveSpeed;
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
if (Input.GetAxisRaw ("Horizontal") > 0.5f || Input.GetAxisRaw ("Horizontal") < -0.5f)
{
transform.Translate (new Vector3 (Input.GetAxisRaw ("Horizontal") * moveSpeed * Time.deltaTime, 0f, 0f));
}
}
}
but i need to rotate my character when i move ir in the respective direccion. ive search in internet i doesnt seems to work for me, any solution?
Add the World.Space argument to the Translate parameters.
transform.Translate (new Vector3 (Input.GetAxisRaw ("Horizontal") * moveSpeed * Time.deltaTime, 0f, 0f), Space.World);
transform.LookAt( transform.position + new Vector3(Input.GetAxisRaw ("Horizontal"), 0f, 0f));
For the rotation, you can either use the LookAt function, which might be easier to understand for beginners, or you can use a Quaternion as demonstrated below:
transform.rotation = Quaternion.Euler(transform.rotation.eulerAngles.x,
Input.GetAxisRaw ("Horizontal") * 90f,
transform.rotation.eulerAngles.z );
public float moveSpeed = 10f;
public float turnSpeed = 50f;
void Update ()
{
if(Input.GetKey(KeyCode.UpArrow))
transform.Translate(Vector3.forward * moveSpeed * Time.deltaTime);
if(Input.GetKey(KeyCode.DownArrow))
transform.Translate(-Vector3.forward * moveSpeed * Time.deltaTime);
if(Input.GetKey(KeyCode.LeftArrow))
transform.Rotate(Vector3.up, -turnSpeed * Time.deltaTime);
if(Input.GetKey(KeyCode.RightArrow))
transform.Rotate(Vector3.up, turnSpeed * Time.deltaTime);
if(Input.GetKey(KeyCode.W))
transform.Translate(Vector3.forward * moveSpeed * Time.deltaTime);
if(Input.GetKey(KeyCode.S))
transform.Translate(-Vector3.forward * moveSpeed * Time.deltaTime);
if(Input.GetKey(KeyCode.A))
transform.Rotate(Vector3.up, -turnSpeed * Time.deltaTime);
if(Input.GetKey(KeyCode.D))
transform.Rotate(Vector3.up, turnSpeed * Time.deltaTime);
}
This code works really well