ควบคุมเมาส์เสมือนด้วยเกมคอนโทรลเลอร์ใน Unity

เมื่อพัฒนาเกม Android สำหรับอุปกรณ์หลากหลายรูปแบบ ซึ่งรวมถึงอุปกรณ์แบบพับได้ แท็บเล็ต และหน้าจอขนาดใหญ่ ผู้เล่นมักจะเชื่อมต่อคอนโทรลเลอร์หรือเกมแพดภายนอก การไปยังส่วนต่างๆ ของเมนูด้วยคอนโทรลเลอร์อาจเป็นเรื่องยากสำหรับหน้าจอ UI ที่ออกแบบมาสำหรับการโต้ตอบด้วยการสัมผัสหรือเมาส์

แม้ว่าการออกแบบสถาปัตยกรรม UI ใหม่โดยอิงตามการนำทางด้วย D-pad มาตรฐานโดยทั่วไปจะมอบประสบการณ์การใช้งานที่ดีขึ้น แต่ก็อาจไม่สามารถทำได้เสมอไปสำหรับโปรเจ็กต์ที่มีอยู่ ระบบอินพุตของ Unity มีคอมโพเนนต์ VirtualMouseInput เป็นตัวเลือกอื่น คอมโพเนนต์นี้ช่วยให้คุณควบคุมเคอร์เซอร์ซอฟต์แวร์เสมือนบนหน้าจอได้โดยใช้เกมแพดหรือคอนโทรลเลอร์ที่เชื่อมต่อ

เกี่ยวกับ VirtualMouseInput

คอมโพเนนต์ VirtualMouseInput เป็นยูทิลิตีระดับสูงในแพ็กเกจระบบอินพุตของ Unity ซึ่งเชื่อมโยงอินพุตของเกมแพดกับการควบคุมเคอร์เซอร์บนหน้าจอ การโต้ตอบของตัวชี้ UI และเหตุการณ์หน้าจอสัมผัสจำลอง เมื่อเปิดใช้งาน คอมโพเนนต์นี้จะทำสิ่งต่อไปนี้

  • สร้างอุปกรณ์เมาส์เสมือน: ลงทะเบียนเมาส์จำลองซอฟต์แวร์ในระบบอินพุตของ Unity พร้อมกับอุปกรณ์ชี้ตำแหน่งจริง
  • จับคู่การควบคุมของเกมแพดกับการทำงานของเคอร์เซอร์: คุณสามารถผูกอนาล็อกสติกหรือ D-pad เพื่อย้ายเคอร์เซอร์ไปทั่วหน้าจอ และจับคู่ปุ่มคอนโทรลเลอร์ (เช่น ปุ่มใต้ / A) เพื่อจำลองการคลิกเมาส์ซ้าย ขวา หรือกลาง
  • ผสานรวมกับ Unity UI: องค์ประกอบ UI มาตรฐาน เช่น ปุ่ม ปุ่มเปิด/ปิด และแถบเลื่อน จะตอบสนองต่อเคอร์เซอร์เสมือนอย่างราบรื่นเหมือนกับที่ตอบสนองต่อเมาส์ฮาร์ดแวร์หรือการโต้ตอบด้วยการสัมผัส โดยทำงานร่วมกับ InputSystemUIInputModule ได้อย่างราบรื่น
  • ขับเคลื่อนเคอร์เซอร์ภาพ: ช่วยให้คุณกำหนด Graphic ของ UI (เช่น คอมโพเนนต์ Image) ที่ติดตามและแสดงตำแหน่งของเคอร์เซอร์เสมือนบนหน้าจอโดยอัตโนมัติ

รวมเมาส์เสมือนกับ TouchSimulation

หากเกมของคุณได้รับการออกแบบมาสำหรับหน้าจอสัมผัสโดยเฉพาะและใช้สคริปต์หรือ API การสัมผัสโดยตรง เมาส์เสมือนจะไม่ทริกเกอร์ตรรกะการตรวจจับการสัมผัสที่มีอยู่โดยอัตโนมัติ เนื่องจากระบบจะลงทะเบียนเป็นอุปกรณ์เมาส์แทนที่จะเป็นอุปกรณ์หน้าจอสัมผัส

หากต้องการรองรับการโต้ตอบของเคอร์เซอร์ที่ขับเคลื่อนด้วยเกมแพดโดยไม่ต้องเขียนโค้ดการจัดการการสัมผัสเดิม คุณสามารถใช้ฟีเจอร์ของระบบอินพุตของ Unity TouchSimulation ร่วมกับ VirtualMouseInput ได้

  • วิธีการทำงาน: เมื่อเปิดใช้โดยใช้ TouchSimulation.Enable() ระบบอินพุตจะแปลงการคลิกและการเคลื่อนไหวของตัวชี้จากอุปกรณ์เมาส์ที่ใช้งานอยู่ทั้งหมด ซึ่งรวมถึงเมาส์จำลองซอฟต์แวร์ที่สร้างโดย VirtualMouseInput เป็นเหตุการณ์หน้าจอสัมผัสจำลองโดยอัตโนมัติ
  • โฟลว์ข้อมูลที่ได้: การโต้ตอบของสติกและปุ่มเกมแพดจะขับเคลื่อนเมาส์เสมือน ซึ่ง TouchSimulation จะแปลเป็นการโต้ตอบแบบสัมผัสเดียว (Touchscreen) สคริปต์การตรวจจับการสัมผัสที่มีอยู่สามารถประมวลผลเหตุการณ์เหล่านี้ได้อย่างราบรื่นโดยไม่ต้องแก้ไขโค้ด
  • ข้อควรพิจารณา: TouchSimulation จำกัดอยู่เพียงการจำลองตัวชี้แบบสัมผัสเดียว หากการเล่นเกมของคุณใช้ท่าทางสัมผัสหลายนิ้วที่ซับซ้อน เช่น การบีบเพื่อซูมหรือการหมุนด้วย 2 นิ้ว คุณต้องกำหนดค่าการผูกการทำงานของอินพุตเฉพาะสำหรับการควบคุมของเกมแพด

ดูรายละเอียดทางเทคนิค คุณสมบัติ และเอกสารประกอบการใช้งานทั้งหมดได้ใน ข้อมูลอ้างอิงสคริปต์ UnityEngine.InputSystem.UI.VirtualMouseInput และ UnityEngine.InputSystem.EnhancedTouch.TouchSimulation อย่างเป็นทางการ