using System; using System.Collections; using UnityEngine; public class PlayerMove : MonoBehaviour { [SerializeField] private float basespeed; [SerializeField] private float speed; [SerializeField] private float speedincrease; private Rigidbody rb; [SerializeField] private float slide; Vector3 moveDirection; bool vertical; bool horizontal; private void Start() { rb = GetComponent(); } void Update() { float horizontalInput = Input.GetAxis("Horizontal"); float verticalInput = Input.GetAxis("Vertical"); horizontalInput = Mathf.Round(horizontalInput); verticalInput = Mathf.Round(verticalInput); if (horizontalInput != 0 && horizontal == true) { transform.rotation = Quaternion.Euler(0f, 0f, 90f); vertical = false; moveDirection = new Vector3(horizontalInput,0, 0); moveDirection.Normalize(); if (!vertical) { speed += speedincrease; } } else if (verticalInput != 0 && vertical == true) { transform.rotation = Quaternion.Euler(90f, 0f, 0f); horizontal = false; moveDirection = new Vector3(0, 0, verticalInput); moveDirection.Normalize(); if (!horizontal) { speed += speedincrease; } } else { StartCoroutine(Slide(slide)); transform.rotation = Quaternion.Euler(0f, 0f, 0f); } transform.Translate(moveDirection * speed * Time.deltaTime, Space.World); } IEnumerator Slide(float delay) { yield return new WaitForSeconds(delay); moveDirection = new Vector3(0, 0, 0); horizontal = true; vertical = true; speed = basespeed; } }