🎮 UnityDocs

Input táctil y controles móviles

Cómo leer toques y gestos en móvil con el Input System (Touchscreen, Enhanced Touch), montar controles en pantalla (joystick y botones On-Screen) y las buenas prácticas para que un juego se sienta bien con los dedos.

📄 ArtículoIntermedio✅ RevisadoUnity 6.0 LTSActualizado 2026-07-17
DificultadConceptual Código Matemáticas
Tiempo📖 Lectura 8 min · ⌨️ Práctica 20 min

El móvil no tiene teclado#

En móvil, la entrada son toques y gestos sobre la pantalla. Con el Input System hay dos capas: leer los toques crudos, y ofrecer controles en pantalla (un joystick virtual, botones) que emulan un mando.

Enhanced Touch, no el viejo Input.touches

El sistema clásico Input.touches sigue existiendo, pero con el Input System moderno usa la Enhanced Touch API (UnityEngine.InputSystem.EnhancedTouch), más robusta y con historial de toques. Actívala una vez con EnhancedTouchSupport.Enable().

Leer toques#

C#
using UnityEngine;
using UnityEngine.InputSystem.EnhancedTouch;
using Touch = UnityEngine.InputSystem.EnhancedTouch.Touch;

public class LectorTactil : MonoBehaviour
{
    void OnEnable()  => EnhancedTouchSupport.Enable();
    void OnDisable() => EnhancedTouchSupport.Disable();

    void Update()
    {
        foreach (var toque in Touch.activeTouches)   // soporta multitouch
        {
            if (toque.phase == UnityEngine.InputSystem.TouchPhase.Began)
                Disparar(toque.screenPosition);
        }
    }

    void Disparar(Vector2 pantalla) { /* raycast desde la cámara, etc. */ }
}

Las fases (Began, Moved, Ended) y activeTouches (varios dedos a la vez) son la base de gestos como tap, swipe o pinch (zoom con dos dedos calculando la distancia entre ellos).

Controles en pantalla (On-Screen)#

Para un juego de acción, lo más cómodo es un joystick virtual + botones que el Input System trata como si fueran un mando físico:

  • On-Screen Stick: un componente sobre una imagen de UI (Canvas) que genera un valor de Vector2 en el control que le asignes (por ejemplo, el "Move" de tu Action).
  • On-Screen Button: una imagen que dispara un botón virtual (saltar, disparar).

Lo bueno: tu código de juego no cambia. Lee la Action Move/Jump igual que con teclado o mando; el On-Screen Stick solo es otra fuente que la alimenta.

Diseña para el pulgar

Coloca el joystick y los botones en las esquinas inferiores, donde llegan los pulgares, y hazlos grandes. Deja el centro de la pantalla libre (ahí está la acción y ahí tapan los dedos). Prueba en un móvil real: en el editor con ratón todo parece cómodo y en la mano no lo es.

Buenas prácticas#

  • Zonas de toque generosas: los dedos son imprecisos; botones pequeños frustran.
  • Feedback inmediato: que el botón se ilumine/vibre al pulsar (hápticos).
  • Respeta el notch y las áreas seguras: usa los anclajes de UI para no meter botones bajo la cámara frontal.
  • Multitouch: permite moverse y disparar a la vez (joystick con un pulgar, botón con el otro).

Errores frecuentes#

  • Usar Input.GetMouseButton para "tocar": funciona a medias y no da multitouch; usa la Touch API.
  • Botones diminutos pensados con el ratón del editor (imposibles con el dedo).
  • Olvidar EnhancedTouchSupport.Enable() y que activeTouches venga vacío.
  • Poner UI en las esquinas donde está el notch/área insegura.
  • No probar en dispositivo real y descubrir que los controles no se alcanzan.

Ponte a prueba#

📝 Pon a prueba lo aprendido

Resumen#

En móvil la entrada son toques y gestos. Con el Input System, lee toques con la Enhanced Touch API (activeTouches, fases, multitouch) para gestos, y monta controles en pantalla (On-Screen Stick/Button) que alimentan las mismas Actions que un mando, así tu código no cambia. Diseña para el pulgar (botones grandes en las esquinas, áreas seguras) y prueba en un móvil real. Cuida además el rendimiento móvil.

Fuentes y para profundizar