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
}
}
}