Global Game Jam 2022
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

152 lines
3.6 KiB

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]
private AudioClip m_LandSound;
[SerializeField]
private AudioClip m_SpikeSound;
[SerializeField]
private AudioClip m_PoisonSound;
[SerializeField]
private AudioClip m_MooseSound;
[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");
AudioSource.PlayClipAtPoint(m_LandSound, transform.position);
}
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);
}
}
private void OnTriggerEnter2D(Collider2D collision)
{
Debug.Log($"Collision with {collision.gameObject.name}");
if (collision.CompareTag("Spikes"))
{
AudioSource.PlayClipAtPoint(m_SpikeSound, transform.position);
}
if (collision.CompareTag("Poison"))
{
AudioSource.PlayClipAtPoint(m_PoisonSound, transform.position);
}
if (collision.CompareTag("Moose"))
{
AudioSource.PlayClipAtPoint(m_MooseSound, transform.position);
}
}
}