using StateMachine; using UnityEngine; namespace Player.States { public class Run : State { private readonly Player _player; private static readonly int AnimRun = Animator.StringToHash("Run"); public Run(Player player) : base(PlayerState.Run) { _player = player; } public override void Enter() { _player.animator.SetBool(AnimRun, true); } private Vector3 _velocity; public override void Update() { _velocity = _player.moveDirection * _player.runSpeed * Time.fixedDeltaTime; if (Input.GetKeyUp(KeyCode.LeftShift) || (Input.GetAxis("Horizontal") == 0f && Input.GetAxis("Vertical") == 0f)) { _player.StateMachine.SetCurrentState(PlayerState.Walk); } } public override void FixedUpdate() { _player.playerRigidbody.velocity = new Vector3(_velocity.x, _player.playerRigidbody.velocity.y, _velocity.z) ; } public override void Exit() { _player.animator.SetBool(AnimRun, false); } } }