¿Cómo apoyar los lápices Surface en Unity?

18

Nuestro juego funciona muy bien con el tacto o el mouse, pero el lápiz Surface no parece registrarse en absoluto como un dispositivo señalador. ¿Cómo podemos soportar el lápiz en Unity en una versión nativa?

Esta pregunta en el sitio Unity Answers sugiere que podríamos construirla como una aplicación para UWP, pero eso significa restringirnos a un subconjunto muy limitado del marco .NET (específicamente, perdemos muchas de las bibliotecas de Serialización).

Gregory Avery-Weir
fuente
¿Puedes tratarlo solo como entrada táctil?
Evorlor
@Everlor, no se registra en Unity como entrada táctil. Si sabes cómo hacerlo, sería genial.
Gregory Avery-Weir
@ArcaneEngineer No estoy seguro; por el momento (1) parece muy complicado y no estoy seguro de cómo hacer (2) en absoluto. No parece que sea particularmente difícil admitir uno de los sistemas de entrada integrados de un sistema operativo, pero no puedo encontrar recursos en él.
Gregory Avery-Weir
2
No he encontrado respuestas en otros lugares, como tú. Para (2), necesitaría una DLL llamada por su aplicación Unity, o un servicio de Windows (o aplicación Win si un servicio no hace el trabajo) que se ejecuta junto con su aplicación. Tendría que tomar las entradas en ese servicio / aplicación, desde la API de Microsoft apropiada (Pen, creo), y enrutar esos datos a su aplicación Unity a través de IPC . La conexión de DLL a Unity Direct parece más fácil. ¿Pero podría obtener acceso a la API en cuestión? - No estoy seguro.
Ingeniero

Respuestas:

0

En mi SP3, el lápiz funciona con https://docs.unity3d.com/ScriptReference/Input-mousePosition.html y devuelve un Vector3 con coordenadas x, y y 0z. Estoy usando Unity 5.6 en Linux, pero si el lápiz no aparece como entrada táctil en Windows, supongo que tiene el mismo comportamiento.

usuario3362964
fuente
3
Este es un comentario, no una respuesta a la pregunta que es, "¿Cómo podemos apoyar el lápiz en Unity en una versión nativa?" .
Ingeniero
1
No tengo suficiente representante para comentar sobre la pregunta y esto funciona. Probé esto nuevamente con un SP3 con Windows 10 y Unity 5.2 y estaba informando correctamente la ubicación del lápiz de superficie como si fuera un mouse.
user3362964
¡Increíble! De hecho, la posición del lápiz se informa, pero no me di cuenta porque los grifos del lápiz no se registran como clics del mouse. ¿Tiene alguna idea de cómo reconocer los toques de lápiz como clics del mouse (o cualquier tipo de entrada)?
Gregory Avery-Weir
1
Tal vez podría hacer algo extravagante al detectar cuándo el lápiz deja de moverse, pero no he encontrado nada en la API de entrada de Unity que detecte correctamente los toques. Creo que tendrías que usar una de las sugerencias de @Arcane Engineer y usar algo externo que pase los datos a tu juego.
user3362964