using UnityEngine;
namespace Client.Input
{
public class KeyboardInput : MonoBehaviour
{
private static KeyboardInput _instance;
public static KeyboardInput Instance
{
get
{
if (_instance) return _instance;
_instance = FindObjectOfType<KeyboardInput>();
if (_instance) return _instance;
var go = new GameObject("KeyboardInput");
_instance = go.AddComponent<KeyboardInput>();
return _instance;
}
}
public Vector2 Direction { get; private set; }
private void Awake()
{
if (_instance is not null && _instance != this)
{
Destroy(gameObject);
}
else
{
_instance = this;
}
}
private void Update()
{
if (UnityEngine.Input.GetKey(KeyCode.A))
{
Direction = new Vector2(-1, Direction.y);
}
if (UnityEngine.Input.GetKey(KeyCode.D))
{
Direction = new Vector2(1, Direction.y);
}
if (UnityEngine.Input.GetKey(KeyCode.W))
{
Direction = new Vector2(Direction.x, 1);
}
if (UnityEngine.Input.GetKey(KeyCode.S))
{
Direction = new Vector2(Direction.x, -1);
}
if (UnityEngine.Input.GetKey(KeyCode.A) && UnityEngine.Input.GetKey(KeyCode.D))
{
Direction = new Vector2(0, Direction.y);
}
if (!UnityEngine.Input.GetKey(KeyCode.A) && !UnityEngine.Input.GetKey(KeyCode.D))
{
Direction = new Vector2(0, Direction.y);
}
if (UnityEngine.Input.GetKey(KeyCode.W) && UnityEngine.Input.GetKey(KeyCode.S))
{
Direction = new Vector2(Direction.x, 0);
}
if (!UnityEngine.Input.GetKey(KeyCode.W) && !UnityEngine.Input.GetKey(KeyCode.S))
{
Direction = new Vector2(Direction.x, 0);
}
}
}
}