using System; using Data; using UnityEngine; public class Pawn : MonoBehaviour { public Animator Animator => animator; [SerializeField] private UnitData unitData; [SerializeField] private SpriteRenderer spriteRenderer; [SerializeField] private Animator animator; private Vector2 _moveInput; public virtual void HandleIdle() { animator.Play("Idle"); } public virtual void HandleMove(Vector2 input) { _moveInput = input; animator.Play(input.magnitude > 0 ? "Walk" : "Idle"); if (_moveInput.magnitude > 0) transform.localScale = new Vector3(_moveInput.x > 0 ? 1 : -1, 1, 1); } public virtual float HandleAttack(string attackName) { animator.Play(attackName); animator.Update(0f); var state = animator.GetCurrentAnimatorStateInfo(0); return state.length * state.speed; } private void FixedUpdate() { transform.Translate(_moveInput * unitData.MoveSpeed); } }