So ive been trying to get this 2.5D Player controller working they way i want for a day now. Ive tried multiple methods and finaly came up with a solution for my problem getting the player to face the direction im moving, however now my player only moves right.
I think it has to do with the problematic peice of code i will highlight bellow, as when i remove it, the movement works fine, but im not sure. i will also post the full code below that just in case.
Problem code:
// Get Axis for player input
var x = Input.GetAxis("Horizontal") * Time.deltaTime * walk;
var z = Input.GetAxis("Vertical") * Time.deltaTime * walk;
transform.Rotate(0, 0, 0);
transform.Translate(0, 0, x);
//Rotate character in the direction they're moving
if (x != 0)
{
if (x > 0)
transform.forward = new Vector3(1, 0, 0);
else if (x < 0)
transform.forward = new Vector3(-1, 0, 0);
}
full code :
using UnityEngine;
using System.Collections;
public class PlayerController : MonoBehaviour {
public float walk = .7f;
public Animation anim;
void Start ()
{
anim = GetComponent<Animation>();
}
void Update()
{
// Get Axis for player input
var x = Input.GetAxis("Horizontal") * Time.deltaTime * walk;
var z = Input.GetAxis("Vertical") * Time.deltaTime * walk;
transform.Rotate(0, 0, 0);
transform.Translate(0, 0, x);
//Rotate character in the direction they're moving
if (x != 0)
{
if (x > 0)
transform.forward = new Vector3(1, 0, 0);
else if (x < 0)
transform.forward = new Vector3(-1, 0, 0);
}
anim ["walk_normal"].speed = 2f;
if(Mathf.Abs(Input.GetAxis("Horizontal"))>0.1F)
anim.Play("walk_normal");
else
anim.Play ("idle_normal");
Thanks
Chris