using System.Collections; using System.Collections.Generic; using Mirror; using StateMachine; using UnityEngine; namespace Player.States { public class Jump : State { 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 } } }