Aprende a crear una transición automática entre escenas en Unity con C#, usando una change zone con BoxCollider2D en modo trigger, un prefab reutilizable y ajustes en Build Settings. Además, verás cómo organizar capas (foreground, background, building) y el order in layer para un acabado limpio en exterior e interior. Domina un flujo simple, claro y eficaz sin añadir complejidad innecesaria.
¿Cómo diseñar escenas y capas para una transición limpia?
Organiza dos escenas: la exterior (con fachada, puerta, ventana, leña y porche) y el interior (suelo, mesa, sillas, cofres, luces y ventanas). La clave está en las capas y los colliders.
¿Qué capas y colliders se usan en el interior?
Usa dos capas: fondo y frente.
El frente tiene Tilemap Collider 2D activo.
El fondo no tiene colisión.
El suelo es una capa sin colisión.
Objetos como mesas, sillas y cofres bloquean el paso.
¿Cómo resolver techo y fachada con order in layer?
Crea una capa adicional tipo building para colocar el techo por encima de la fachada.
Mantén fachada y techo en foreground, pero con distinto order in layer: el más al frente con valor más positivo.
Truco visual: usa una fachada cuadrada y superpone puerta, ventana y tejado con order in layer para simular mitad techo y mitad fachada sin romper el tilemap.
¿Cómo crear la zona de cambio con collider y prefab?
El flujo de transición se basa en detectar la entrada del jugador a una zona invisible y cargar otra escena con SceneManagement.
Crea un objeto vacío llamado Change Zone. Es invisible; añade un icono solo para ubicarlo.
Asigna un BoxCollider2D y marca isTrigger para activar el cambio sin colisión física.
Sitúa la zona justo antes de la puerta en el exterior.
Asigna el script Go to new place a la Change Zone.
Convierte la Change Zone en prefab para reutilizarla en cualquier escena.
¿Cómo configurar el script en C#?
Replica la lógica mínima: importar SceneManagement, exponer el nombre de la nueva escena y cargarla al entrar el Player en el trigger.
usingUnityEngine;usingUnityEngine.SceneManagement;publicclassGoToNewPlace:MonoBehaviour{publicstring newPlaceName ="new scene name here";privatevoidOnTriggerEnter2D(Collider2D collision){if(collision.gameObject.CompareTag("Player")){ SceneManager.LoadScene(newPlaceName);}}}
Variable pública: newPlaceName editable desde el editor.
Método: OnTriggerEnter2D detecta la entrada del Player por etiqueta.
Acción: SceneManager.LoadScene(newPlaceName) ejecuta la transición.
¿Qué ajustes en Build Settings aseguran la carga?
Abre Build Settings y añade ambas escenas con “Add Open Scenes”.
Ordena para que Main Scene sea la primera y House Interior Scene la segunda.
En la Change Zone del exterior, escribe en newPlaceName: "house interior scene".
En el interior, coloca otra Change Zone en la salida y pon newPlaceName: "main scene".
¿Qué flujo de transición entre escenas se logra?
Al acercarte a la casa, el Player entra en la Change Zone y se carga la escena interior automáticamente. Desde el interior, otra Change Zone te devuelve al exterior. El resultado es una transición bidireccional simple y estable.
Exterior: camina hasta la puerta, entra en la zona y cambia a interior.
Interior: cruza la zona de salida y vuelve a la escena principal.
Observa en la jerarquía: cámara y Player se recrean en cada transición al ser nuevas escenas. Se recomienda, más adelante, reutilizar una única instancia para todo el juego.
¿Te gustaría comentar cómo organizarías tus prefabs y capas para soportar más edificios o múltiples interiores?