using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.InputSystem; using Variables; using NaughtyAttributes; public class CharacterInputController : MonoBehaviour { [SerializeField, Header("References")] private CharacterController2D m_characterController; [SerializeField] private Reference m_playerInput; [SerializeField] private Reference m_noInputAllowed; [SerializeField] private Reference m_isPlayerDead; [SerializeField] private Reference m_isVictory; [SerializeField] private Animator m_animator; [SerializeField, BoxGroup("Settings")] private float m_speed = 2.0f; [ShowNonSerializedField] private Vector2 m_movement; [ShowNonSerializedField] private bool m_jump; private void OnEnable() { m_isPlayerDead.OnValueChanged += OnDeath; m_isVictory.OnValueChanged += OnVictory; } private void OnDisable() { m_isPlayerDead.OnValueChanged -= OnDeath; m_isVictory.OnValueChanged -= OnVictory; } public void OnMove(InputAction.CallbackContext context) { m_movement = context.ReadValue(); } public void OnJump(InputAction.CallbackContext context) { m_jump = context.ReadValueAsButton(); } private void Update() { if (!m_noInputAllowed) { m_characterController.Move(m_movement.x * m_speed, false, m_jump); m_playerInput.Value = m_movement.magnitude != 0 || m_jump; } else { m_characterController.Move(0, false, false); m_playerInput.Value = false; } m_animator.SetBool("isMoving", m_playerInput); } public void OnLandHappened() { m_animator.SetTrigger("Land"); } public void OnJumpHappened() { m_animator.SetTrigger("Land"); } public void OnDeath(bool value) { if (value) m_animator.SetTrigger("Death"); else m_animator.SetTrigger("Respawn"); } public void OnVictory(bool value) { if (value) m_animator.SetTrigger("Victory"); } }