2024-10-17 23:09:51 +03:00

53 lines
1.7 KiB
C#

using System.Collections;
using System.Collections.Generic;
using Mirror;
using StateMachine;
using UnityEngine;
namespace Player.States
{
public class Jump : State<PlayerState>
{
private readonly Player _player;
private static readonly int AnimJump = Animator.StringToHash("Jump");
public Jump(Player player) : base(PlayerState.Jump)
{
_player = player;
}
public override void Enter()
{
Debug.Log("ENTER");
_player.animator.SetBool(AnimJump, true);
_player.playerRigidbody.AddForce(Vector3.up * _player.jumpForce, ForceMode.Impulse);
_player.StartCoroutine(ResetJumpAnimation());
}
private IEnumerator ResetJumpAnimation()
{
yield return new WaitForSeconds(.2f); // Adjust the delay as needed
_player.animator.SetBool(AnimJump, false);
}
public override void Update()
{
if (_player.isGrounded && (Input.GetAxis("Horizontal") != 0f || Input.GetAxis("Vertical") != 0f) && Input.GetKey(KeyCode.LeftShift))
{
_player.StateMachine.SetCurrentState(PlayerState.Run);
}
else if (_player.isGrounded)
{
_player.StateMachine.SetCurrentState(PlayerState.Walk);
}
Vector3 velocity = _player.moveDirection * (_player.runSpeed * .5f * Time.deltaTime);
_player.playerRigidbody.velocity = new Vector3(velocity.x, _player.playerRigidbody.velocity.y, velocity.z);
}
public override void Exit()
{
// Additional exit logic if needed
}
}
}