Como dar suporte a canetas de superfície no Unity?

18

Nosso jogo funciona muito bem com o toque ou o mouse, mas a caneta Surface não parece se registrar como um dispositivo apontador. Como podemos suportar a caneta no Unity em uma compilação nativa?

Esta pergunta no site do Unity Answers sugere que podemos construí-lo como um aplicativo UWP, mas isso significa restringir-nos a um subconjunto muito limitado da estrutura .NET (especificamente, perdemos muitas bibliotecas de serialização).

Gregory Avery-Weir
fonte
Você pode apenas tratá-lo como entrada por toque?
Evorlor 22/05
@ Everver, ele não se registra no Unity como entrada de toque. Se você souber como fazê-lo, isso seria incrível.
Gregory Avery-Weir
@ArcaneEngineer Não tenho certeza; no momento (1) parece muito complicado e não tenho certeza de como fazer (2). O suporte a um dos sistemas de entrada integrados de um sistema operacional não parece ser particularmente difícil, mas não consigo encontrar recursos.
Gregory Avery-Weir
2
Não encontrei respostas em outro lugar, como você. Para (2), você precisaria de uma DLL chamada pelo aplicativo Unity ou de um serviço do Windows (ou do aplicativo Win, se um serviço não funcionar) em execução ao lado do aplicativo. Você precisaria pegar as entradas nesse serviço / aplicativo, da API apropriada da Microsoft (Pen, acho) e encaminhar esses dados para o aplicativo Unity via IPC . A conexão da DLL ao Unity Direct parece mais fácil. Mas ele poderia ter acesso à API em questão? - Não tenho certeza.
Engineer

Respostas:

0

No meu SP3, a caneta trabalha com https://docs.unity3d.com/ScriptReference/Input-mousePosition.html e retorna um Vector3 com as coordenadas x, ye z. Estou usando o Unity 5.6 no Linux, mas se a caneta não aparecer como entrada de toque no Windows, eu assumiria que ele tem o mesmo comportamento.

user3362964
fonte
3
Este é um comentário, não uma resposta à pergunta que é: "Como podemos apoiar a caneta no Unity em uma construção nativa?" .
Engenheiro de
1
Eu não tenho representante suficiente para comentar sobre a pergunta e isso funciona. Testei isso novamente com um SP3 com Windows 10 e Unity 5.2 e estava relatando corretamente o local da caneta de superfície como se fosse um mouse.
precisa saber é o seguinte
Impressionante! A posição da caneta é realmente relatada, mas eu não percebi porque as torneiras da caneta não são registradas como cliques do mouse. Você tem alguma idéia de como reconhecer os toques da caneta como cliques do mouse (ou qualquer tipo de entrada)?
Gregory Avery-Weir
1
Talvez você pudesse fazer algo hacky ao detectar quando a caneta para de se mover, mas não encontrei nada na API de entrada do Unity que detecta corretamente os toques. Acho que você teria que usar uma das sugestões do @Arcane Engineer e usar algo externo que passa os dados para o seu jogo.
user3362964