Điều khiển chuột ảo bằng tay điều khiển trò chơi trong Unity

Khi phát triển trò chơi Android cho nhiều kiểu dáng (bao gồm cả thiết bị có thể gập lại, máy tính bảng và màn hình lớn), người chơi thường kết nối bộ điều khiển hoặc tay cầm chơi game bên ngoài. Đối với những màn hình giao diện người dùng ban đầu được thiết kế để tương tác bằng cảm ứng hoặc chuột, việc di chuyển trong trình đơn bằng bộ điều khiển có thể gặp khó khăn.

Mặc dù việc thiết kế lại cấu trúc giao diện người dùng dựa trên chế độ điều hướng bằng D-pad tiêu chuẩn thường mang lại trải nghiệm người dùng tốt hơn, nhưng điều này không phải lúc nào cũng khả thi đối với các dự án hiện có. Ngoài ra, Unity Input System (Hệ thống đầu vào của Unity) cung cấp thành phần VirtualMouseInput. Thành phần này cho phép bạn điều khiển con trỏ phần mềm ảo trên màn hình bằng tay cầm chơi game hoặc bộ điều khiển được kết nối.

Giới thiệu về VirtualMouseInput

Thành phần VirtualMouseInput là một tiện ích cấp cao trong gói Unity Input System (Hệ thống đầu vào của Unity) giúp kết nối các hoạt động đầu vào của tay cầm chơi game với chế độ điều khiển con trỏ trên màn hình, các hoạt động tương tác của con trỏ trên giao diện người dùng và các sự kiện màn hình cảm ứng mô phỏng. Khi hoạt động, tính năng này sẽ:

  • Tạo thiết bị chuột ảo: Thao tác này đăng ký một chuột mô phỏng bằng phần mềm trong Unity Input System cùng với mọi thiết bị trỏ thực.
  • Ánh xạ chế độ điều khiển bằng tay chơi game trên Maps với các thao tác bằng con trỏ: Bạn có thể liên kết cần điều khiển tương tự hoặc D-pad để di chuyển con trỏ trên màn hình, đồng thời ánh xạ các nút trên bộ điều khiển (chẳng hạn như Nút phía Nam / A) để mô phỏng thao tác nhấp chuột trái, phải hoặc giữa.
  • Tích hợp với giao diện người dùng Unity: Bằng cách hoạt động liền mạch với InputSystemUIInputModule, các phần tử giao diện người dùng tiêu chuẩn như nút, nút bật/tắt và thanh trượt sẽ phản hồi con trỏ ảo giống hệt như khi phản hồi chuột phần cứng hoặc thao tác chạm.
  • Điều khiển con trỏ ảo: Thao tác này cho phép bạn chỉ định một Graphic giao diện người dùng (chẳng hạn như thành phần Image) tự động theo dõi và kết xuất vị trí của con trỏ ảo trên màn hình.

Kết hợp chuột ảo với TouchSimulation

Nếu trò chơi của bạn ban đầu được thiết kế dành riêng cho màn hình cảm ứng và dựa vào các tập lệnh hoặc API cảm ứng trực tiếp, thì chuột ảo sẽ không tự động kích hoạt logic phát hiện thao tác chạm hiện có vì chuột ảo đăng ký dưới dạng thiết bị chuột chứ không phải thiết bị màn hình cảm ứng.

Để hỗ trợ hoạt động tương tác bằng con trỏ dựa trên tay cầm chơi game mà không cần viết lại mã xử lý thao tác chạm cũ, bạn có thể sử dụng tính năng TouchSimulation của Unity Input System cùng với VirtualMouseInput:

  • Cách hoạt động: Khi được bật bằng TouchSimulation.Enable(), Hệ thống đầu vào sẽ tự động chuyển đổi các lượt nhấp và chuyển động của con trỏ từ mọi thiết bị chuột đang hoạt động (bao gồm cả chuột do phần mềm mô phỏng được tạo bằng VirtualMouseInput) thành các sự kiện mô phỏng trên màn hình cảm ứng.
  • Luồng dữ liệu kết quả: Tương tác của bạn với nút và cần điều khiển trên tay cầm chơi game sẽ điều khiển chuột ảo, sau đó TouchSimulation sẽ chuyển thành các sự kiện một lần chạm (Touchscreen). Các tập lệnh phát hiện thao tác chạm hiện có của bạn có thể xử lý các sự kiện này một cách liền mạch mà không cần sửa đổi mã.
  • Những điểm cần cân nhắc: TouchSimulation chỉ giới hạn ở tính năng mô phỏng con trỏ một lần chạm. Nếu lối chơi của bạn dựa trên các cử chỉ phức tạp nhiều điểm chạm như chụm để thu phóng hoặc xoay bằng hai ngón tay, thì bạn phải định cấu hình các liên kết hành động đầu vào chuyên dụng cho các nút điều khiển trên tay cầm chơi game.

Để biết đầy đủ thông tin kỹ thuật, thuộc tính và tài liệu sử dụng, hãy tham khảo UnityEngine.InputSystem.UI.VirtualMouseInputUnityEngine.InputSystem.EnhancedTouch.TouchSimulation chính thức.