using System; using System.Collections; using Unity.VisualScripting; using UnityEngine; public class PlayerMove : MonoBehaviour { [SerializeField] private float basespeed; [SerializeField] private float speed; [SerializeField] private float speedincrease; [SerializeField] private float maxspeed; private Rigidbody rb; [SerializeField] private float slide; Vector3 moveDirection; bool vertical; private bool horizontal; [SerializeField] StandUpCollider standUp; [SerializeField] private string inputNameHorizontal; [SerializeField] private string inputNameVertical; private void Start() { rb = GetComponent(); standUp = GetComponentInChildren(); } void Update() { float horizontalInput = Input.GetAxis(inputNameHorizontal); float verticalInput = Input.GetAxis(inputNameVertical); horizontalInput = Mathf.Round(horizontalInput); verticalInput = Mathf.Round(verticalInput); if (horizontalInput != 0 && horizontal == true) { if (!standUp.ispushing) { transform.rotation = Quaternion.Euler(0f, 0f, 90f); } vertical = false; moveDirection = new Vector3(horizontalInput,0, 0); moveDirection.Normalize(); if (!vertical && speed <= maxspeed && !standUp.ispushing) { speed += speedincrease; } } else if (verticalInput != 0 && vertical == true) { if (!standUp.ispushing) { transform.rotation = Quaternion.Euler(90f, 0f, 0f); } horizontal = false; moveDirection = new Vector3(0, 0, verticalInput); moveDirection.Normalize(); if (!horizontal && speed <= maxspeed && !standUp.ispushing) { 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; } }