Untitled
using System.Collections; using System.Collections.Generic; using UnityEngine; namespace Jiya.FinalCC { public class PlayerAnimation : MonoBehaviour { [SerializeField] private Animator _animator; [SerializeField] private float locomotionBlendSpeed = 4f; private PlayerLocomotionInput _playerLocomotionInput; private PlayerState _playerState; private PlayerController _playerController; private static int inputXHash = Animator.StringToHash("inputX"); private static int inputYHash = Animator.StringToHash("inputY"); private static int inputMagnitudeHash = Animator.StringToHash("inputMagnitude"); private static int isIdlingHash = Animator.StringToHash("isIdling"); private static int isGroundedHash = Animator.StringToHash("isGrounded"); private static int isFallingHash = Animator.StringToHash("isFalling"); private static int isJumpingHash = Animator.StringToHash("isJumping"); private static int isRotatingToTarget = Animator.StringToHash("isRotatingToTarget"); private static int rotationMismatchHash = Animator.StringToHash("rotationMismatch"); private Vector3 _currentBlendInput = Vector3.zero; private void Awake() { _playerLocomotionInput = GetComponent<PlayerLocomotionInput>(); _playerState = GetComponent<PlayerState>(); } private void Update() { UpdateAnimationState(); } private void UpdateAnimationState() { bool isIdling = _playerState.CurrentPlayerMovementState == PlayerMovementState.Idling; bool isRunning = _playerState.CurrentPlayerMovementState == PlayerMovementState.Running; bool isSprinting = _playerState.CurrentPlayerMovementState == PlayerMovementState.Sprinting; bool isJumping = _playerState.CurrentPlayerMovementState == PlayerMovementState.Jumping; bool isFalling = _playerState.CurrentPlayerMovementState == PlayerMovementState.Falling; bool isGrounded = _playerState.InGroundedState(); Vector2 inputTarget = isSprinting ? _playerLocomotionInput.MovementInput * 1.5f : _playerLocomotionInput.MovementInput; _currentBlendInput = Vector3.Lerp(_currentBlendInput, inputTarget, locomotionBlendSpeed * Time.deltaTime); _animator.SetBool(isIdlingHash, isIdling); _animator.SetBool(isRotatingToTargetHash, _playerController.IsRotatingToTarget); _animator.SetBool(isGroundedHash, isGrounded); _animator.SetBool(isFallingHash, isFalling); _animator.SetBool(isJumpingHash, isJumping); _animator.SetFloat(inputXHash, _currentBlendInput.x); _animator.SetFloat(inputYHash, _currentBlendInput.y); _animator.SetFloat(inputMagnitudeHash, _currentBlendInput.magnitude); _animator.SetFloat(rotationMismatchHash, _playerController.RotationMismatch); } } }
Leave a Comment