unity tutorial tag script detectar controles c# unity3d click touch

c# - tag - unity touch input tutorial



En unity3D, Click=Touch? (3)

La respuesta es no, hay una aplicación de Android remota de unidad ( Play Store ) para simular tocar en modo editor. Creo que esto puede ser útil.

Quiero detectar el evento click / touch en mi gameObject 2D.

Y este es mi código:

void Update() { if (Input.touchCount > 0) { Debug.Log("Touch"); } }

Debug.Log("Touch"); no se muestra cuando hago clic en la pantalla o en mi gameObject.


Por lo que entiendo, el reproductor de Unity no te permite activar eventos táctiles, solo eventos de mouse.

Pero puedes simular eventos táctiles falsos basados ​​en los eventos del mouse, como se explica en esta publicación del 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; } }


Respuesta corta: sí, el tacto se puede manejar con Input.GetMouseButtonDown() .

  • Input.GetMouseButtonDown() , Input.mousePosition y las funciones asociadas funcionan como tocar en la pantalla táctil (lo cual es algo extraño, pero bienvenido). Si no tiene un juego multitáctil, esta es una buena manera de mantener el juego en el editor funcionando bien y al mismo tiempo mantener la entrada táctil para los dispositivos. (fuente: Comunidad de Unidad )
    La simulación de mouse con toques se puede activar / desactivar con la opción Input.simulateMouseWithTouches . Por defecto, esta opción está habilitada.
    Aunque es bueno para las pruebas, creo que Input.GetTouch() debería usarse en el código de producción.

  • Un enfoque interesante es agregar el manejo táctil al OnMouseUp() / OnMouseDown() :

    // 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 el toque en modo editor (funciona con Unity Editor 4 y Unity Editor 5).