using UnityEngine; using UnityEngine.InputSystem; using UnityEngine.InputSystem.EnhancedTouch; [DefaultExecutionOrder(-1)] public class InputManager : Singleton<InputManager> { private TouchControls touchControls; public delegate void StartTouch(Vector2 position, float time); public event StartTouch OnStartTouch; public delegate void EndTouch(Vector2 position, float time); public event EndTouch OnEndTouch; private Camera mainCamera; private void Awake() { touchControls = new TouchControls(); mainCamera = Camera.main; } private void OnEnable() { touchControls.Enable(); } private void OnDisable() { touchControls.Disable(); } private void Start() { touchControls.Touch.TouchPress.started += ctx => StartTouchPrimary(ctx); touchControls.Touch.TouchPress.canceled += ctx => EndTouchPrimary(ctx); } private void StartTouchPrimary(InputAction.CallbackContext context) { if(OnStartTouch != null) { OnStartTouch(Ultils.ScreenToWorld(mainCamera, touchControls.Touch.TouchPosition.ReadValue<Vector2>()), (float)context.startTime); } } private void EndTouchPrimary(InputAction.CallbackContext context) { if (OnEndTouch != null) { OnEndTouch(Ultils.ScreenToWorld(mainCamera, touchControls.Touch.TouchPosition.ReadValue<Vector2>()), (float)context.time); } } public Vector2 PrimaryPosition() { return Ultils.ScreenToWorld(mainCamera, touchControls.Touch.TouchPosition.ReadValue<Vector2>()); } }