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.
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):
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);
}
}
}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
Updateen vez deLateUpdate(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.