Advertisement
Guest User

MoveState

a guest
Oct 25th, 2022
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.81 KB | None | 0 0
  1. using CombatSystem.StateMachines;
  2. using Unity.VisualScripting;
  3. using UnityEngine;
  4.  
  5. public class PlayerMoveState : PlayerBaseState
  6. {
  7.     public PlayerMoveState(PlayerStateMachine stateMachine) : base(stateMachine)
  8.     {
  9.  
  10.     }
  11.  
  12.     public override void Enter()
  13.     {
  14.         Debug.Log("Moving");
  15.     }
  16.     public override void Tick(float deltaTime)
  17.     {
  18.         if (StateMachine.PlayerInventorySystem.isPlayerInteracting)
  19.             StateMachine.SwitchState(new PlayerInteractState(StateMachine));
  20.  
  21.         if (StateMachine.PlayerInputReader.isBackfliping)
  22.             StateMachine.SwitchState(new PlayerBackflipState(StateMachine));
  23.  
  24.         bool isSprinting = StateMachine.PlayerInputReader.isSprinting;
  25.  
  26.         if (isSprinting)
  27.         {
  28.             StateMachine.PlayerAnimator.SetBool("isSprinting", true);
  29.             StateMachine.PlayerData.Sprint();
  30.         }
  31.         else
  32.         {
  33.             StateMachine.PlayerAnimator.SetBool("isSprinting", false);
  34.             StateMachine.PlayerData.StopSprinting();
  35.  
  36.         }
  37.  
  38.         Vector3 movement = CalculateDirection();
  39.  
  40.  
  41.         ApplyGravity();
  42.         SetAnimatorValue(deltaTime);
  43.  
  44.         StateMachine.PlayerCharacterController.Move(StateMachine.PlayerData.PlayerSpeed * Time.deltaTime * movement);
  45.  
  46.  
  47.         if (StateMachine.PlayerInputReader.MovementValue == Vector2.zero) return;
  48.  
  49.  
  50.         StateMachine.transform.rotation = Quaternion.Lerp(StateMachine.transform.rotation, Quaternion.LookRotation(movement), deltaTime * StateMachine.PlayerData.RotationSmoothTime);
  51.     }
  52.     public override void Exit()
  53.     {
  54.  
  55.     }
  56.  
  57.     private void SetAnimatorValue(float delta)
  58.     {
  59.         StateMachine.PlayerAnimator.SetFloat("X", StateMachine.PlayerInputReader.MovementValue.x, 0.1f, delta);
  60.         StateMachine.PlayerAnimator.SetFloat("Y", StateMachine.PlayerInputReader.MovementValue.y, 0.1f, delta);
  61.     }
  62.  
  63.     private void ApplyGravity()
  64.     {
  65.         StateMachine.PlayerCharacterController.Move(Vector3.down * 9.8f);
  66.     }
  67.  
  68.     private Vector3 CalculateDirection()
  69.     {
  70.         Vector3 rightCam = StateMachine.MainCameraTransform.right;
  71.         Vector3 forwardCam = StateMachine.MainCameraTransform.forward;
  72.  
  73.         rightCam.y = 0.0f;
  74.         forwardCam.y = 0.0f;
  75.  
  76.         rightCam.Normalize();
  77.         forwardCam.Normalize();
  78.  
  79.         return rightCam * StateMachine.PlayerInputReader.MovementValue.x + forwardCam * StateMachine.PlayerInputReader.MovementValue.y;
  80.     }
  81.  
  82.     private void SetPlayerRotation(float deltaTime)
  83.     {
  84.         Vector3 rotationDir = CalculateDirection();
  85.         Quaternion playerRotation = StateMachine.transform.rotation;
  86.  
  87.         StateMachine.transform.rotation = Quaternion.Lerp(playerRotation, Quaternion.LookRotation(rotationDir), deltaTime * StateMachine.PlayerData.RotationSmoothTime);
  88.     }
  89. }
  90.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement