using System; using System.Collections; using System.Collections.Generic; using BITFALL.Player.Movement; using BITKit.StateMachine; using UnityEngine; namespace BITFALL.Entities.Player.Movement.States { [Serializable] public class Climb : PlayerCharacterState,IPlayerClimbState { [SerializeField] protected float lerpDelta = 5; public override void OnStateEntry(IState old) { actor.alwaysNotGrounded = true; actor.ForceNotGrounded(); actor.ColliderComponent.enabled = false; } public override void OnStateUpdate(float deltaTime) { if (Vector3.Distance(characterController.expectClimb.shouldBe, characterController.transform.position) < 0.1f || actor.IsStable) { characterController.TransitionState(); } } public override void OnStateExit(IState old, IState newState) { actor.alwaysNotGrounded = false; actor.ColliderComponent.enabled = true; characterController.ExpectJump.Reset(); actor.ForceGrounded(); } public override void UpdateVelocity(ref Vector3 currentVelocity, float deltaTime) { currentVelocity =(characterController.expectClimb.shouldBe - characterController.transform.position)*lerpDelta; } } }