Próbuję użyć IMU DualShock 4 jako kontrolera ruchu w Unity pod Windows 7.
Do tej pory próbowałem:
- DS4Windows (1.5.11): odczytuje dane czujnika ruchu, ale nie wystawia ich na Unity jako osie, chyba że odwzoruję je na lewy i prawy drążek. To nie wystarczy, ponieważ tracę użycie drążków, mogę zmieścić tylko 4 z 6 kanałów danych, a nadchodzące wartości są przycięte w wąskim zakresie.
- Motioninjoy (0.7.1001): nie wydaje się wykryć DS4 jako kontroler (ostatnie docs odnoszą się tylko do DS3 i przed)
- GlovePIE (0.43): po wykonaniu instrukcji używania DualShock 3 z LibUSB-Win32 (długie ujęcie), wszystkie właściwości SixAxis są puste.
W przeszłości korzystałem z zewnętrznych programów, takich jak GlovePIE, aby przechwytywać dane zdalnego czujnika ruchu Wii i przekazywać je do Unity za pośrednictwem komunikatów OSC , więc byłbym otwarty na takie podejście, jeśli nie mogę zmusić Unity do odczytania czujników kontrolera bezpośrednio przez system wprowadzania danych .
Czy ktoś miał z tym szczęście?
źródło
Sam stworzyłem rozwiązanie tego problemu. Nazywa się JoyShockLibrary i czyta z DualShock 4, Switch Pro Controller i Joy-Cons. Jest to oprogramowanie typu open source, licencja MIT i działa dobrze, chociaż obsługa DS4 przez Bluetooth została dodana dopiero niedawno i wciąż się poprawia.
Jest używany w JoyShockMapper , który jest narzędziem do mapowania danych wejściowych, oraz w JoyShockOverlay, która nie jest jeszcze publiczna, ale można to zobaczyć w akcji tutaj (Gfycat) i tutaj (YouTube).
JoyShockLibrary ładnie uzupełnia XInput - poza raportami IMU, wygląda bardzo podobnie do XInput - dzięki czemu można łatwo objąć wszystkie obecne kontrolery konsoli genowej, korzystając z żyroskopu i akcelerometru od tych, które go obsługują.
Jest dość łatwy w użyciu z Unity, chociaż powinienem umieścić plik .cs, aby ułatwić innym.
źródło
Wydaje się, że wszystkie są narzędziami, które zawijają DirectInput na XInput. Unity ma wsparcie dla DirectInput, więc powinieneś zastanowić się, jak to działa bez narzędzi innych firm. Kluczem jest to, czy IMU jest mapowane na cokolwiek w DirectInput i czy jest już w stanie użytkowym. Jeśli nie, być może będziesz musiał napisać własną procedurę obsługi DirectInput, aby poradzić sobie z surowymi danymi.
Możesz podziękować xbox za wszystkie te problemy z kontrolerem.
źródło