using System; using System.Collections; using System.Collections.Generic; using UnityEngine; public class PlayerController : MonoBehaviour { public float walkSpeed; public GameObject model; private Vector2 receivedInput; // Start is called before the first frame update void Start() { } public void SetMovement(Vector2 input) { receivedInput = input; } public void UpdatePosition() { float HorseX, HorseZ; HorseZ = receivedInput.y; HorseX = receivedInput.x; float rotateTo = RotateObject(HorseX, HorseZ); HorseZ *= walkSpeed; HorseX *= walkSpeed; transform.Translate(HorseX, 0, HorseZ); //Vector3 dir = Quaternion.Euler(-90, rotateTo, 0) * Vector3.forward; //model.transform.forward = dir; //LeanTween.rotateY(model, rotateTo, 0.1f); } public float RotateObject(float xInput, float zInput) { float to = model.transform.rotation.eulerAngles.y; //Debug.Log(to); if (receivedInput.x != 0 || receivedInput.y != 0) { if (zInput > 0 && xInput == 0) to = 0; else if (zInput < 0 && xInput == 0) to = 180; else if (zInput == 0 && xInput > 0) to = 90; else if (zInput == 0 && xInput < 0) to = 270; else if (zInput > 0 && xInput > 0) to = 45; else if (zInput < 0 && xInput > 0) to = 135; else if (zInput < 0 && xInput < 0) to = 225; else if (zInput > 0 && xInput < 0) to = 315; } return to; } public void MoveObject() { UpdatePosition(); if (receivedInput.x != 0 || receivedInput.y != 0) { model.transform.Rotate(-90, 0, 0); } } // Update is called once per frame void Update() { } }