using UnityEngine;
using TMPro;
public class PlayerController : MonoBehaviour
{
[SerializeField] float movementSpeed = 5f;
float currentSpeed;
[SerializeField] Rigidbody rb;
Vector3 direction;
[SerializeField] float shiftSpeed = 10f;
[SerializeField] float jumpForce = 7f;
[SerializeField] float stamina = 5f;
bool isGrounded = true;
[SerializeField] Animator anim;
void Start()
{
rb = GetComponent<Rigidbody>();
anim = GetComponent<Animator>();
currentSpeed = movementSpeed;
}
void Update()
{
float moveHorizontal = Input.GetAxis("Horizontal");
float moveVertical = Input.GetAxis("Vertical");
direction = new Vector3(moveHorizontal, 0.0f, moveVertical);
direction = transform.TransformDirection(direction);
if(direction.x != 0 || direction.z != 0)
{
anim.SetBool("Run", true);
}
if(direction.x == 0 && direction.z == 0)
{
anim.SetBool("Run", false);
}
if (Input.GetKeyDown(KeyCode.Space) && isGrounded)
{
rb.AddForce(new Vector3(0, jumpForce, 0), ForceMode.Impulse);
isGrounded = false;
anim.SetBool("Jump", true);
}
if(Input.GetKey(KeyCode.LeftShift))
{
if(stamina > 0)
{
stamina -= Time.deltaTime;
currentSpeed = shiftSpeed;
}
else
{
currentSpeed = movementSpeed;
}
}
else if (!Input.GetKey(KeyCode.LeftShift))
{
stamina += Time.deltaTime;
currentSpeed = movementSpeed;
}
if(stamina > 5)
{
stamina = 5;
}
else if (stamina < 0)
{
stamina = 0;
}
print(stamina);
}
void FixedUpdate()
{
rb.MovePosition(transform.position + direction * currentSpeed *
Time.deltaTime);
}
void OnCollisionEnter(Collision collision)
{
isGrounded = true;
anim.SetBool("Jump", false);
}
}