using KinematicCharacterController; using UnityEngine; namespace Code.OfficeGame.Player { public class EntityAnimator : MonoBehaviour { private static readonly int VelocityForward = Animator.StringToHash("VelocityForward"); private static readonly int VelocityRight = Animator.StringToHash("VelocityRight"); private KinematicCharacterMotor _motor; [SerializeField] private Animator animator; public Animator Animator { get; private set; } private void Awake() { _motor = GetComponent(); // :?:?:?:?:?:?:?:?:?:?:?:?:?:? if (!animator) Animator = GetComponentInChildren(); else Animator = animator; } private void Update() { var forwardVelocity = Vector3.Project(_motor.Velocity, transform.right).magnitude; Animator.SetFloat(VelocityForward, forwardVelocity); var rightVelocity = Vector3.Project(_motor.Velocity, transform.forward).magnitude; Animator.SetFloat(VelocityRight, rightVelocity); } } }