jueves, 13 de febrero de 2014

Unity3D Scripting: Pulsación tactil

Hoy enseñaré como usar las pulsaciones en pantalla de una forma rápida y para mi gusto elegante.

using UnityEngine;
using System.Collections;

public class Example : MonoBehaviour {
    void Update() {
        foreach (Touch touch in Input.touches) 
 {
  Debug.Log("Dedo "+touch.fingerId);
  Debug.Log("Posicion +"+touch.position);
  Debug.Log("\nPosición respecto al ultimo frame"+touch.deltaPosition);
  Debug.Log("\nfase en la que se encuentra el dedo "+touch.phase);
 }
    }
}
Explicaré paso por paso que hacemos:



 foreach (Touch touch in Input.touches) 
Recorremos todas las pulsaciones que estamos haciendo en la pantalla en ese momento, en caso de no haber pulsaciones no entrará en este bucle.

Debug.Log("Dedo "+touch.fingerId);
Veremos en el log que dedo es el que está activo en este momento, la id del dedo se le asigna a medida que se pulsa en pantalla simultaneamente, es decir, el primer dedo que pulse la pantalla tendrá la id 0, en caso de que se ponga un segundo dedo mientras el primero sigue pulsando la pantalla se le asignará el id 1 y así tantos dedos como quepan/permita la pantalla táctil, lo cual hay que tener en cuenta ya que algunos dispositivos no soportan mas de dos o incluso mas de un solo dedo a la vez.

Debug.Log("Posición +"+touch.position);
Detecta la posición actual en la pantalla del dedo en cuestión.

Debug.Log("Posición delta"+touch.deltaPosition);
Detecta la distancia a la que está de la posición del frame anterior, es decir, si desplazas el dedo hacia la derecha por ejemplo 5 píxeles pues te devolvería 5 en el eje x, en cambio al no haber movido el dedo arriba o abajo, el eje y te devolvería 0.

Debug.Log("Fase "+touch.phase);
Por último, este parámetro devolverá la fase en la que se encuentra el dedo, las fases son el estado en el que se encuentra y pueden ser los siguientes:

Began
El dedo ha empezado a tocar la pantalla.
Moved
El dedo se ha desplazado sobre la pantalla.
Stationary
El dedo no se ha movido por la pantalla.
Ended
El dedo ha dejado de tocar la pantalla.
Canceled
El sistema ha dejado de seguir el estado del dedo.

4 comentarios:

  1. Gracias juande ... Creo que eres lo mejor que le ha podido pasar a la comunidad hispana en la web... Gracias por tus aportes,son muy valiosos.

    ResponderEliminar
  2. ¡Muchas gracias a ti! Pero una pequeña corrección, me llamo David.

    ResponderEliminar
  3. Te felicito por tu gran aporte a la comunidad!

    ResponderEliminar
  4. ¿Como se puede utilizar Debug.log con la pulsacion tactil?...
    Gracias por todos los aportes.

    ResponderEliminar