Files
WhiteMan_Unity2D/Assets/02_Scripts/Managers/InputManager.cs

58 lines
1.4 KiB
C#

using System;
using UnityEngine;
using UnityEngine.InputSystem;
public class InputManager : MonoBehaviour, GameInput.IPlayerActions
{
public static InputManager Instance { get; private set; }
private GameInput _input;
public event Action<Vector2> OnMove_Event;
public event Action OnJump_Event;
public event Action OnPunch_Event;
public event Action OnKick_Event;
private void Awake()
{
if (Instance != null && Instance != this)
{
Destroy(gameObject);
return;
}
Instance = this;
_input = new GameInput();
_input.Player.SetCallbacks(this);
}
private void OnEnable() => _input?.Player.Enable();
private void OnDisable() => _input?.Player.Disable();
private void OnDestroy() => _input?.Dispose();
public void OnMove(InputAction.CallbackContext ctx)
{
OnMove_Event?.Invoke(ctx.ReadValue<Vector2>());
}
public void OnJump(InputAction.CallbackContext ctx)
{
if (ctx.phase == InputActionPhase.Started)
OnJump_Event?.Invoke();
}
public void OnPunch(InputAction.CallbackContext ctx)
{
if (ctx.phase == InputActionPhase.Started)
OnPunch_Event?.Invoke();
}
public void OnKick(InputAction.CallbackContext ctx)
{
if (ctx.phase == InputActionPhase.Started)
OnKick_Event?.Invoke();
}
}