Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using CombatSystem.StateMachines;
- using Unity.VisualScripting;
- using UnityEngine;
- public class PlayerMoveState : PlayerBaseState
- {
- public PlayerMoveState(PlayerStateMachine stateMachine) : base(stateMachine)
- {
- }
- public override void Enter()
- {
- Debug.Log("Moving");
- }
- public override void Tick(float deltaTime)
- {
- if (StateMachine.PlayerInventorySystem.isPlayerInteracting)
- StateMachine.SwitchState(new PlayerInteractState(StateMachine));
- if (StateMachine.PlayerInputReader.isBackfliping)
- StateMachine.SwitchState(new PlayerBackflipState(StateMachine));
- bool isSprinting = StateMachine.PlayerInputReader.isSprinting;
- if (isSprinting)
- {
- StateMachine.PlayerAnimator.SetBool("isSprinting", true);
- StateMachine.PlayerData.Sprint();
- }
- else
- {
- StateMachine.PlayerAnimator.SetBool("isSprinting", false);
- StateMachine.PlayerData.StopSprinting();
- }
- Vector3 movement = CalculateDirection();
- ApplyGravity();
- SetAnimatorValue(deltaTime);
- StateMachine.PlayerCharacterController.Move(StateMachine.PlayerData.PlayerSpeed * Time.deltaTime * movement);
- if (StateMachine.PlayerInputReader.MovementValue == Vector2.zero) return;
- StateMachine.transform.rotation = Quaternion.Lerp(StateMachine.transform.rotation, Quaternion.LookRotation(movement), deltaTime * StateMachine.PlayerData.RotationSmoothTime);
- }
- public override void Exit()
- {
- }
- private void SetAnimatorValue(float delta)
- {
- StateMachine.PlayerAnimator.SetFloat("X", StateMachine.PlayerInputReader.MovementValue.x, 0.1f, delta);
- StateMachine.PlayerAnimator.SetFloat("Y", StateMachine.PlayerInputReader.MovementValue.y, 0.1f, delta);
- }
- private void ApplyGravity()
- {
- StateMachine.PlayerCharacterController.Move(Vector3.down * 9.8f);
- }
- private Vector3 CalculateDirection()
- {
- Vector3 rightCam = StateMachine.MainCameraTransform.right;
- Vector3 forwardCam = StateMachine.MainCameraTransform.forward;
- rightCam.y = 0.0f;
- forwardCam.y = 0.0f;
- rightCam.Normalize();
- forwardCam.Normalize();
- return rightCam * StateMachine.PlayerInputReader.MovementValue.x + forwardCam * StateMachine.PlayerInputReader.MovementValue.y;
- }
- private void SetPlayerRotation(float deltaTime)
- {
- Vector3 rotationDir = CalculateDirection();
- Quaternion playerRotation = StateMachine.transform.rotation;
- StateMachine.transform.rotation = Quaternion.Lerp(playerRotation, Quaternion.LookRotation(rotationDir), deltaTime * StateMachine.PlayerData.RotationSmoothTime);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement