Solución:
Respuesta corta: sí, el tacto se puede manejar con Input.GetMouseButtonDown()
.
-
Input.GetMouseButtonDown()
,Input.mousePosition
, y las funciones asociadas funcionan como un toque en la pantalla táctil (lo cual es un poco extraño, pero bienvenido). Si no tiene un juego multitáctil, esta es una buena manera de mantener el buen funcionamiento del juego en el editor y al mismo tiempo mantener la entrada táctil para los dispositivos. (fuente: Unity Community)La simulación del mouse con toques se puede habilitar / deshabilitar con
Input.simulateMouseWithTouches
opción. De forma predeterminada, esta opción está habilitada.
Aunque es bueno para probar, creoInput.GetTouch()
debe usarse en el código de producción (porque puede manejar toques simultáneos). -
Un enfoque interesante es agregar manejo táctil a
OnMouseUp()
/OnMouseDown()
evento:// OnTouchDown.cs // Allows "OnMouseDown()" events to work on the iPhone. // Attach to the main camera. using UnityEngine; using System.Collections; using System.Collections.Generic; public class OnTouchDown : MonoBehaviour { void Update () { // Code for OnMouseDown in the iPhone. Unquote to test. RaycastHit hit = new RaycastHit(); for (int i = 0; i < Input.touchCount; ++i) if (Input.GetTouch(i).phase.Equals(TouchPhase.Began)) { // Construct a ray from the current touch coordinates Ray ray = Camera.main.ScreenPointToRay(Input.GetTouch(i).position); if (Physics.Raycast(ray, out hit)) hit.transform.gameObject.SendMessage("OnMouseDown"); } } }
(fuente: Unity Answers)
UPD .: Existe la aplicación móvil Unity Remote para simular tocar en modo editor (funciona con Unity Editor 4 y Unity Editor 5).
Por lo que tengo entendido, el reproductor Unity no te permite activar eventos táctiles, solo eventos de mouse.
Pero puede simular eventos táctiles falsos basados en los eventos del mouse, como se explica en esta publicación de blog: http://2sa-studio.blogspot.com/2015/01/simulating-touch-events-from-mouse.html
void Update () {
// Handle native touch events
foreach (Touch touch in Input.touches) {
HandleTouch(touch.fingerId, Camera.main.ScreenToWorldPoint(touch.position), touch.phase);
}
// Simulate touch events from mouse events
if (Input.touchCount == 0) {
if (Input.GetMouseButtonDown(0) ) {
HandleTouch(10, Camera.main.ScreenToWorldPoint(Input.mousePosition), TouchPhase.Began);
}
if (Input.GetMouseButton(0) ) {
HandleTouch(10, Camera.main.ScreenToWorldPoint(Input.mousePosition), TouchPhase.Moved);
}
if (Input.GetMouseButtonUp(0) ) {
HandleTouch(10, Camera.main.ScreenToWorldPoint(Input.mousePosition), TouchPhase.Ended);
}
}
}
private void HandleTouch(int touchFingerId, Vector3 touchPosition, TouchPhase touchPhase) {
switch (touchPhase) {
case TouchPhase.Began:
// TODO
break;
case TouchPhase.Moved:
// TODO
break;
case TouchPhase.Ended:
// TODO
break;
}
}
La respuesta corta es no, hay una unidad remota aplicación de Android (aplicación remota) para simular tocar en modo editor. Creo que esto puede ser útil.
La antigua aplicación de Android quedó obsoleta. vaya al documento relacionado para obtener más información, y ahora también es compatible con iOS y tvOS.