Saltar al contenido

En unity3D, Click = Touch?

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, creo Input.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.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *