Ich versuche, die IMU eines DualShock 4 unter Windows 7 als Motion Controller in Unity zu verwenden.
Bisher habe ich versucht:
- DS4Windows (1.5.11): Liest Bewegungssensordaten, setzt sie jedoch nicht als Achsen Unity aus, es sei denn, ich ordne sie den linken und rechten Sticks zu. Dies ist nicht genug, da ich die Verwendung der Sticks verliere, nur 4 der 6 Datenkanäle anpassen kann und die durchkommenden Werte in einen engen Bereich begrenzt werden.
- Motioninjoy (0.7.1001): Der DS4 scheint nicht als Controller erkannt zu werden (die neuesten Dokumente beziehen sich nur auf DS3 und frühere Versionen).
- GlovePIE (0.43): Nachdem Sie die Anweisungen zur Verwendung von DualShock 3 mit LibUSB-Win32 (eine lange Einstellung) befolgt haben, sind alle SixAxis-Eigenschaften leer.
In der Vergangenheit habe ich externe Programme wie GlovePIE verwendet, um Wii-Remote-Bewegungssensordaten zu erfassen und über OSC-Nachrichten an Unity weiterzuleiten. Daher wäre ich für einen solchen Ansatz offen, wenn ich Unity nicht dazu bringen kann, die Sensoren des Controllers zu lesen direkt über sein Eingabesystem .
Hat jemand Glück damit gehabt?
quelle
Ich habe selbst eine Lösung dafür gefunden. Es heißt JoyShockLibrary und liest von DualShock 4, Switch Pro Controller und Joy-Cons. Es ist Open Source, MIT-Lizenz und funktioniert gut, obwohl die Bluetooth-Unterstützung für den DS4 erst kürzlich hinzugefügt wurde und sich immer noch verbessert.
Es wird in JoyShockMapper , einem Eingabe-Mapping-Tool, und JoyShockOverlay verwendet, das noch nicht öffentlich ist, aber Sie können es hier (Gfycat) und hier (YouTube) in Aktion sehen .
JoyShockLibrary ergänzt XInput sehr gut - neben seinen IMU-Berichten sieht es XInput sehr ähnlich -, sodass Sie alle aktuellen Konsolencontroller der Generation problemlos abdecken können, mit dem Vorteil der Kreisel- und Beschleunigungsmessereingabe von denen, die es unterstützen.
Es ist ziemlich einfach mit Unity zu verwenden, obwohl ich eine CS-Datei erstellen sollte, um es für andere einfacher zu machen.
quelle
Dies scheinen alle Tools zu sein, die DirectInput in XInput umschließen. Unity unterstützt DirectInput. Daher sollten Sie versuchen, es ohne Tools von Drittanbietern zum Laufen zu bringen. Der Schlüssel ist, ob die IMU einem beliebigen Element in DirectInput zugeordnet ist und sich bereits in einem verwendbaren Zustand befindet. Wenn nicht, müssen Sie möglicherweise Ihren eigenen DirectInput-Handler schreiben, um mit den Rohdaten umgehen zu können.
Sie können der Xbox für all diese Probleme mit dem Controller danken.
quelle