Estoy tratando de usar una IMU de DualShock 4 como controlador de movimiento en Unity, bajo Windows 7.
Hasta ahora he intentado:
- DS4Windows (1.5.11): lee los datos del sensor de movimiento, pero no los expone a Unity como ejes a menos que los asigne a los sticks izquierdo y derecho. Esto no es suficiente ya que pierdo el uso de los sticks, solo puedo ajustar 4 de los 6 canales de datos, y los valores que vienen se recortan en un rango estrecho.
- MotioninJoy (0.7.1001): no aparece para detectar la DS4 como un controlador (últimos documentos se refieren únicamente a DS3 y antes)
- GlovePIE (0.43): después de seguir las instrucciones para usar el DualShock 3 con LibUSB-Win32 (una posibilidad remota), las propiedades de SixAxis están en blanco.
En el pasado, he usado programas externos como GlovePIE para capturar datos del sensor de movimiento remoto de Wii y pasarlos a Unity a través de mensajes OSC , por lo que estaría abierto a un enfoque como este si no puedo hacer que Unity lea los sensores del controlador directamente a través de su sistema de entrada .
Alguien tuvo suerte con esto?
fuente
Yo mismo he creado una solución para esto. Se llama JoyShockLibrary y lee desde DualShock 4, Switch Pro Controller y Joy-Cons. Es de código abierto, licencia MIT y funciona bien, aunque el soporte Bluetooth para el DS4 solo se agregó recientemente y todavía está mejorando.
Se usa en JoyShockMapper , que es una herramienta de mapeo de entrada, y JoyShockOverlay, que aún no es público, pero puede verlo en acción aquí (Gfycat) y aquí (YouTube).
JoyShockLibrary complementa muy bien XInput, además de sus informes de IMU, se ve muy similar a XInput, por lo que puede cubrir fácilmente todos los controladores de consola genéricos actuales, con el beneficio de la entrada de giroscopio y acelerómetro de aquellos que lo admiten.
Es bastante fácil de usar con Unity, aunque debería poner un archivo .cs para que sea más fácil para los demás.
fuente
Parece que todas son herramientas que envuelven DirectInput a XInput. Unity tiene soporte para DirectInput y, por lo tanto, debería buscar que funcione sin herramientas de terceros. La clave es si la IMU está asignada a algo en DirectInput y si ya está en un estado utilizable. De lo contrario, es posible que deba escribir su propio controlador DirectInput para manejar los datos sin procesar.
Puedes agradecer a xbox por todos estos problemas con el controlador.
fuente