using UnityEngine; #if ENABLE_INPUT_SYSTEM using UnityEngine.InputSystem; #endif /// /// ตัวกลางอ่านอินพุต รองรับทั้ง Input Manager แบบเก่า และ Input System ใหม่ /// (ไม่ต้องตั้งค่า Input Actions เพิ่ม) /// public class GameInput : MonoBehaviour { /// WASD / ลูกศร (x = ซ้าย-ขวา, y = หน้า-หลัง) public static Vector2 Move { get { #if ENABLE_INPUT_SYSTEM var k = Keyboard.current; if (k == null) return Vector2.zero; float x = (k.dKey.isPressed || k.rightArrowKey.isPressed ? 1f : 0f) - (k.aKey.isPressed || k.leftArrowKey.isPressed ? 1f : 0f); float y = (k.wKey.isPressed || k.upArrowKey.isPressed ? 1f : 0f) - (k.sKey.isPressed || k.downArrowKey.isPressed ? 1f : 0f); return Vector2.ClampMagnitude(new Vector2(x, y), 1f); #else return Vector2.ClampMagnitude( new Vector2(Input.GetAxisRaw("Horizontal"), Input.GetAxisRaw("Vertical")), 1f); #endif } } /// ปุ่มเมาส์ขวากำลังถูกกดค้าง public static bool RightMouseHeld { get { #if ENABLE_INPUT_SYSTEM return Mouse.current != null && Mouse.current.rightButton.isPressed; #else return Input.GetMouseButton(1); #endif } } /// ระยะที่เมาส์ขยับในเฟรมนี้ (ปรับสเกลให้ใกล้เคียงกันทั้งสองระบบ) public static Vector2 Look { get { #if ENABLE_INPUT_SYSTEM return Mouse.current != null ? Mouse.current.delta.ReadValue() * 0.1f : Vector2.zero; #else return new Vector2(Input.GetAxisRaw("Mouse X"), Input.GetAxisRaw("Mouse Y")); #endif } } /// ลูกกลิ้งเมาส์ (+ = เลื่อนขึ้น/ซูมเข้า) public static float Scroll { get { #if ENABLE_INPUT_SYSTEM return Mouse.current != null ? Mathf.Clamp(Mouse.current.scroll.ReadValue().y / 120f, -1f, 1f) : 0f; #else return Input.mouseScrollDelta.y; #endif } } public static bool SprintHeld { get { #if ENABLE_INPUT_SYSTEM return Keyboard.current != null && Keyboard.current.leftShiftKey.isPressed; #else return Input.GetKey(KeyCode.LeftShift); #endif } } public static bool JumpPressed { get { #if ENABLE_INPUT_SYSTEM return Keyboard.current != null && Keyboard.current.spaceKey.wasPressedThisFrame; #else return Input.GetKeyDown(KeyCode.Space); #endif } } }