|
|
- using System;
- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
- using Random = System.Random;
-
- public class PlayerController : MonoBehaviour
- {
- public float walkSpeed;
- public float gravity;
- public GameObject model;
- public CharacterController cController;
-
- private float speedMulitplier;
-
- private Vector2 receivedInput;
- private Vector3 moveDirection = Vector3.zero;
-
- // Start is called before the first frame update
- void Start()
- {
- speedMulitplier = UnityEngine.Random.Range(0.8f, 1.2f);
- cController = GetComponent<CharacterController>();
- }
-
- public void SetMovement(Vector2 input)
- {
- receivedInput = input;
- }
-
- public void UpdatePosition()
- {
- float HorseX, HorseZ;
- HorseZ = receivedInput.y;
- HorseX = receivedInput.x;
-
- if (cController.isGrounded)
- {
- moveDirection = new Vector3(HorseX, 0, HorseZ);
- moveDirection *= walkSpeed * speedMulitplier;
- }
-
- moveDirection.y -= gravity * Time.deltaTime;
-
- cController.Move(moveDirection * Time.deltaTime);
-
-
- //float rotateTo = RotateObject(HorseX, HorseZ);
- //HorseZ *= Time.deltaTime * walkSpeed * speedMulitplier;
- //HorseX *= Time.deltaTime * walkSpeed * speedMulitplier;
- //
- //
- //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(float wait)
- {
- StartCoroutine(RandomWait(wait));
- }
-
- public IEnumerator RandomWait(float wait)
- {
- yield return new WaitForSeconds(UnityEngine.Random.Range(0, wait/2));
-
- if (cController.isGrounded)
- {
- Vector3 rotateDir = new Vector3(90 * Math.Sign(receivedInput.y), 0, -90 * Math.Sign(receivedInput.x));
- model.transform.Rotate(rotateDir, Space.World);
- }
- }
-
- // Update is called once per frame
- void Update()
- {
- UpdatePosition();
- }
- }
|