You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

97 lines
2.8 KiB

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<Rigidbody>();
standUp = GetComponentInChildren<StandUpCollider>();
}
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;
}
}