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()
|
|
{
|
|
StartCoroutine((FlipOnAxis()));
|
|
}
|
|
|
|
public void SetMovement(Vector2 input)
|
|
{
|
|
receivedInput = input;
|
|
}
|
|
|
|
public void UpdatePosition()
|
|
{
|
|
float HorseX, HorseZ;
|
|
HorseZ = Input.GetAxisRaw("Vertical");
|
|
HorseX = Input.GetAxisRaw("Horizontal");
|
|
|
|
float rotateTo = RotateObject(HorseX, HorseZ);
|
|
|
|
HorseZ = Input.GetAxis("Vertical") * Time.deltaTime * walkSpeed;
|
|
HorseX = Input.GetAxis("Horizontal") * Time.deltaTime * walkSpeed;
|
|
|
|
|
|
transform.Translate(HorseX, 0, HorseZ);
|
|
LeanTween.rotateY(model, rotateTo, 0.1f);
|
|
|
|
}
|
|
|
|
public float RotateObject(float xInput, float zInput)
|
|
{
|
|
float to = model.transform.rotation.eulerAngles.y;
|
|
//Debug.Log(to);
|
|
if (Input.GetAxisRaw("Horizontal") != 0 || Input.GetAxis("Vertical") != 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 IEnumerator FlipOnAxis()
|
|
{
|
|
if (Input.GetAxisRaw("Horizontal") != 0 || Input.GetAxis("Vertical") != 0)
|
|
{
|
|
LeanTween.rotateX(model, -90, 0.1f);
|
|
}
|
|
yield return new WaitForSeconds(0.5f);
|
|
}
|
|
}
|
|
|
|
// Update is called once per frame
|
|
void Update()
|
|
{
|
|
UpdatePosition();
|
|
}
|
|
}
|