using UnityEngine; [RequireComponent(typeof(SpriteRenderer)), RequireComponent(typeof(Animator)), RequireComponent(typeof(PlayerManager))] public class PlayerMovements : MonoBehaviour { private SpriteRenderer _sr; private Animator _animator; private PlayerManager _pm; public bool LookOnRight = true; private void Start() { _sr = GetComponent(); _animator = GetComponent(); _pm = GetComponent(); } private void FixedUpdate() { /** --- Move player along 2D axis ----------------------------------*/ float moveH = Input.GetAxis("Horizontal") * _pm.Speed * Time.deltaTime; float moveV = Input.GetAxis("Vertical") * _pm.Speed * Time.deltaTime; transform.Translate(new Vector2(moveH, moveV)); /** --- Rotate sprite ----------------------------------------------*/ if (moveH < 0) { _sr.flipX = true; LookOnRight = false; } else if (moveH > 0) { _sr.flipX = false; LookOnRight = true; } /** --- update animator -------------------------------------------*/ _animator.SetFloat("Speed", Mathf.Max(Mathf.Abs(moveH), Mathf.Abs(moveV))); } }