Estou tentando usar o IMU de um DualShock 4 como um controlador de movimento no Unity, no Windows 7.
Até agora eu tentei:
- DS4Windows (1.5.11): lê dados do sensor de movimento, mas não os expõe ao Unity como eixos, a menos que eu os mapeie para os manípulos esquerdo e direito. Isso não é suficiente, já que eu perco o uso das varas, posso caber apenas 4 dos 6 canais de dados, e os valores recebidos são cortados em um intervalo estreito.
- Motioninjoy (0.7.1001): não parece detectar o DS4 como um controlador (os documentos mais recentes referem-se apenas ao DS3 e anteriores)
- GlovePIE (0,43): depois de seguir as instruções de uso do DualShock 3 com LibUSB-Win32 (possibilidade remota), as propriedades do SixAxis ficam em branco.
No passado, eu usei programas externos como o GlovePIE para capturar dados do sensor de movimento remoto do Wii e passá-lo para o Unity por meio de mensagens OSC , então eu estaria aberto a uma abordagem como essa se não conseguir que o Unity leia os sensores do controlador diretamente através de seu sistema de entrada .
Alguém teve sorte com isso?
fonte
Eu mesmo criei uma solução para isso. Chama-se JoyShockLibrary e lê DualShock 4, Switch Pro Controller e Joy-Cons. É de código aberto, licença MIT e funciona bem, embora o suporte ao Bluetooth para o DS4 tenha sido adicionado apenas recentemente e ainda esteja melhorando.
É usado no JoyShockMapper , que é uma ferramenta de mapeamento de entrada, e no JoyShockOverlay, que ainda não é público, mas você pode vê-lo em ação aqui (Gfycat) e aqui (YouTube).
O JoyShockLibrary complementa muito bem o XInput - além de seus relatórios IMU, é muito semelhante ao XInput - para que você possa cobrir todos os controladores atuais de console gen facilmente, com o benefício da entrada de giroscópio e acelerômetro daqueles que o suportam.
É muito fácil de usar com o Unity, embora eu deva colocar um arquivo .cs para facilitar para outros.
fonte
Todas parecem ferramentas que envolvem o DirectInput no XInput. O Unity tem suporte para DirectInput e, portanto, você deve procurar fazê-lo funcionar sem ferramentas de terceiros. A chave é se o IMU está mapeado para qualquer coisa no DirectInput e se já está em um estado utilizável. Caso contrário, talvez seja necessário gravar seu próprio manipulador DirectInput para lidar com os dados brutos.
Você pode agradecer ao xbox por todos esses problemas de controle.
fonte