J'essaie d'utiliser l' IMU d' un DualShock 4 comme contrôleur de mouvement dans Unity, sous Windows 7.
Jusqu'à présent, j'ai essayé:
- DS4Windows (1.5.11): lit les données du capteur de mouvement, mais ne les expose pas à Unity en tant qu'axes, sauf si je les mappe sur les joysticks gauche et droit. Ce n'est pas suffisant car je perds l'usage des sticks, je ne peux adapter que 4 des 6 canaux de données, et les valeurs qui transitent sont écrêtées dans une plage étroite.
- Motioninjoy (0.7.1001): ne semble pas détecter le DS4 en tant que contrôleur (les derniers documents se réfèrent uniquement à DS3 et antérieurs)
- GlovePIE (0.43): après avoir suivi les instructions d'utilisation du DualShock 3 avec LibUSB-Win32 (un plan long), les propriétés SixAxis sont toutes vides.
Dans le passé, j'ai utilisé des programmes externes comme GlovePIE pour capturer les données du capteur de mouvement à distance Wii et les transmettre à Unity via les messages OSC , donc je serais ouvert à une approche comme celle-ci si je ne peux pas demander à Unity de lire les capteurs du contrôleur directement via son système d'entrée .
Quelqu'un a eu de la chance avec ça?
la source
J'ai moi-même créé une solution à cela. Il s'appelle JoyShockLibrary et lit à partir de DualShock 4, Switch Pro Controller et Joy-Cons. Il est open source, licence MIT et fonctionne bien, bien que le support Bluetooth pour le DS4 n'ait été ajouté que récemment et continue de s'améliorer.
Il est utilisé dans JoyShockMapper , qui est un outil de mappage d'entrée, et JoyShockOverlay, qui n'est pas encore public, mais vous pouvez le voir en action ici (Gfycat) et ici (YouTube).
JoyShockLibrary complète bien XInput - en plus de ses rapports IMU, il ressemble beaucoup à XInput - vous pouvez donc couvrir facilement tous les contrôleurs de console de génération actuels, avec l'avantage du gyroscope et de l'accéléromètre de ceux qui le prennent en charge.
C'est assez facile à utiliser avec Unity, bien que je devrais mettre en place un fichier .cs pour le rendre plus facile pour les autres.
la source
Ceux-ci semblent tous être des outils qui enveloppent DirectInput dans XInput. Unity prend en charge DirectInput et vous devriez donc envisager de le faire fonctionner sans outils tiers. La clé est de savoir si l'IMU est mappé à quelque chose dans DirectInput et s'il est déjà dans un état utilisable. Sinon, vous devrez peut-être écrire votre propre gestionnaire DirectInput pour gérer les données brutes.
Vous pouvez remercier la xbox pour tous ces problèmes de contrôleur.
la source