🎮 UnityDocs

Cómo hacer un minimapa

Un minimapa con una segunda cámara cenital que renderiza a una Render Texture mostrada en la UI. Cómo hacer que siga al jugador, filtrar qué se ve con capas e iconos, y la versión estática de mapa completo.

🍳 RecetaIntermedio✅ RevisadoUnity 6.0 LTSActualizado 2026-07-15
DificultadConceptual Código Matemáticas
Tiempo📖 Lectura 6 min · ⌨️ Práctica 25 min

La idea#

Un minimapa es, básicamente, una segunda cámara mirando desde arriba cuya imagen se muestra en una esquina de la pantalla. Se consigue con una Render Texture: en vez de dibujar en la pantalla, la cámara dibuja en una textura, y esa textura se enseña en la UI.

Paso 1 — La Render Texture#

Assets → Create → Render Texture. Ponle un tamaño (256×256 va bien) y nómbrala MinimapaRT.

Paso 2 — La cámara del minimapa#

Crea una Camera nueva:

  • Projection: Orthographic (vista de mapa, sin perspectiva).
  • Colócala mirando hacia abajo (rotación X = 90°), a bastante altura.
  • Output → Target Texture: asígnale la MinimapaRT (así no dibuja en pantalla, sino en la textura).
  • Ajusta el Size (ortográfico) para encuadrar la zona que quieres mostrar.
Quítale el AudioListener a la segunda cámara

Toda cámara nueva viene con un AudioListener, y solo debe haber uno activo. Elimínalo de la cámara del minimapa o Unity te avisará y el audio fallará.

Paso 3 — Mostrarla en la UI#

En tu Canvas, crea una RawImage (UI → Raw Image), colócala en una esquina con sus anclas, y asígnale la MinimapaRT en su campo Texture. Ya ves el minimapa. Para que sea redondo, usa una máscara circular.

Paso 4 — Que siga al jugador#

La cámara del minimapa copia la posición del jugador (solo X y Z), manteniendo su altura, en LateUpdate (como cualquier cámara que sigue):

C#
using UnityEngine;

public class CamaraMinimapa : MonoBehaviour
{
    [SerializeField] private Transform objetivo;
    [SerializeField] private float altura = 30f;
    [SerializeField] private bool rotarConJugador = false;

    void LateUpdate()
    {
        if (objetivo == null) return;

        Vector3 pos = objetivo.position;
        pos.y = altura;
        transform.position = pos;

        // Opción A: norte siempre arriba (no rota)
        // Opción B: el mapa gira con el jugador
        if (rotarConJugador)
        {
            float y = objetivo.eulerAngles.y;
            transform.rotation = Quaternion.Euler(90f, y, 0f);
        }
    }
}
¿El norte arriba o el mapa que gira?

Dos escuelas: norte fijo (más fácil de leer, tipo estrategia) o el mapa rota con el jugador (más inmersivo, tipo shooter). El booleano rotarConJugador te deja elegir. Ninguna es "la correcta": depende de tu juego.

Paso 5 — Filtrar qué se ve (capas e iconos)#

No quieres que el minimapa muestre exactamente lo mismo que el juego. Con capas y el Culling Mask de la cámara del minimapa decides qué aparece:

  • Crea una capa Minimapa.
  • Pon iconos (un pequeño quad/sprite mirando hacia arriba) como hijos del jugador y los enemigos, en la capa Minimapa.
  • En el Culling Mask de la cámara del minimapa, incluye la capa Minimapa (y el suelo), y excluye detalles que ensucien.

Así el jugador es una flecha, los enemigos puntos rojos, etc., sin tocar cómo se ven en el juego real.

Variante: mapa completo estático#

Para un mapa del nivel entero (no un minimapa que sigue), coloca la cámara ortográfica alta y quieta encuadrando todo el nivel, renderiza una vez a una Render Texture (o una captura) y muéstrala a pantalla completa al pulsar "M".

Errores frecuentes#

  • Dejar el AudioListener en la segunda cámara (aviso y audio roto).
  • Cámara en perspectiva en vez de ortográfica (el mapa se ve deformado).
  • No usar capas y mostrar en el minimapa el mismo desorden que el juego.
  • Seguir al jugador en Update en vez de LateUpdate (temblor).
  • Render Texture enorme (gasta memoria/rendimiento sin necesidad).

Resumen#

Una segunda cámara ortográfica cenital que renderiza a una Render Texture mostrada en una RawImage de la UI. Que siga al jugador en LateUpdate (norte fijo o rotando, tú eliges), quítale el AudioListener, y usa capas + Culling Mask para mostrar iconos limpios en vez del juego entero. Para un mapa completo, una cámara fija que encuadre todo el nivel.

Fuentes y para profundizar