Saya mencoba menggunakan IMU DualShock 4 sebagai pengontrol gerakan di Unity, di bawah Windows 7.
Sejauh ini saya sudah mencoba:
- DS4Windows (1.5.11): membaca data sensor gerak, tetapi tidak mengeksposnya ke Unity sebagai sumbu kecuali jika saya memetakannya ke batang kiri & kanan. Ini tidak cukup karena saya kehilangan penggunaan tongkat, saya hanya bisa memasukkan 4 dari 6 saluran data, dan nilai-nilai yang masuk terpotong dalam kisaran yang sempit.
- Motioninjoy (0.7.1001): tampaknya tidak mendeteksi DS4 sebagai pengontrol (dokumen terbaru hanya merujuk ke DS3 dan sebelumnya)
- GlovePIE (0.43): setelah mengikuti instruksi untuk menggunakan DualShock 3 dengan LibUSB-Win32 (tembakan panjang), properti SixAxis semuanya kosong.
Di masa lalu saya telah menggunakan program eksternal seperti GlovePIE untuk menangkap data sensor gerak jarak jauh Wii dan meneruskannya ke Unity melalui pesan OSC , jadi saya akan terbuka untuk pendekatan seperti ini jika saya tidak bisa membuat Unity membaca sensor pengontrol langsung melalui sistem Input -nya .
Adakah yang beruntung dengan ini?
sumber
Saya telah membuat solusi untuk ini sendiri. Ini disebut JoyShockLibrary , dan membaca dari DualShock 4, Switch Pro Controller, dan Joy-Cons. Ini open source, lisensi MIT, dan berfungsi dengan baik, meskipun dukungan Bluetooth untuk DS4 baru ditambahkan baru-baru ini dan masih membaik.
Ini digunakan di JoyShockMapper , yang merupakan alat pemetaan input, dan JoyShockOverlay, yang belum dipublikasikan, tetapi Anda dapat melihatnya beraksi di sini (Gfycat) dan di sini (YouTube).
JoyShockLibrary melengkapi XInput dengan baik - selain laporan IMU, tampilannya sangat mirip dengan XInput - sehingga Anda dapat dengan mudah mencakup semua pengontrol konsol gen saat ini dengan mudah, dengan manfaat input gyro dan akselerometer dari mereka yang mendukungnya.
Ini cukup mudah digunakan dengan Unity, meskipun saya harus memasang file .cs untuk membuatnya lebih mudah bagi orang lain.
sumber
Semua itu tampak sebagai alat yang membungkus DirectInput ke XInput. Unity memiliki dukungan untuk DirectInput dan karenanya Anda harus berusaha membuatnya tanpa alat pihak ke-3. Kuncinya adalah jika IMU dipetakan ke apa pun di DirectInput dan jika sudah dalam keadaan dapat digunakan. Jika tidak, Anda mungkin harus menulis handler DirectInput Anda sendiri untuk menangani data mentah.
Anda dapat berterima kasih kepada xbox untuk semua kesengsaraan pengontrol ini.
sumber