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<bool> m_playerInput;
|
|
|
|
[SerializeField]
|
|
private Reference<bool> m_noInputAllowed;
|
|
|
|
[SerializeField]
|
|
private Reference<bool> m_isPlayerDead;
|
|
|
|
[SerializeField]
|
|
private Reference<bool> m_isVictory;
|
|
|
|
[SerializeField]
|
|
private Animator m_animator;
|
|
|
|
[SerializeField]
|
|
private AudioClip m_DeathSound;
|
|
|
|
[SerializeField]
|
|
private AudioClip m_VictoryClip;
|
|
|
|
[SerializeField]
|
|
private AudioClip m_JumpSound;
|
|
|
|
[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<Vector2>();
|
|
}
|
|
|
|
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");
|
|
//AudioSource.PlayClipAtPoint(m_JumpSound, transform.position);
|
|
}
|
|
public void OnDeath(bool value)
|
|
{
|
|
if (value)
|
|
{
|
|
m_animator.SetTrigger("Death");
|
|
AudioSource.PlayClipAtPoint(m_DeathSound, transform.position);
|
|
}
|
|
else
|
|
m_animator.SetTrigger("Respawn");
|
|
}
|
|
|
|
public void OnVictory(bool value)
|
|
{
|
|
if (value)
|
|
{
|
|
m_animator.SetTrigger("Victory");
|
|
AudioSource.PlayClipAtPoint(m_VictoryClip, transform.position);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|