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); } private Vector3 _velocity; 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); } _velocity = _player.moveDirection * (_player.runSpeed * .5f) * Time.fixedDeltaTime; } public override void FixedUpdate() { _player.playerRigidbody.velocity = new Vector3(_velocity.x, _player.playerRigidbody.velocity.y, _velocity.z) ; } public override void Exit() { // Additional exit logic if needed } } }