En este tutorial, aprenderás a hacer que un objeto interactivo en Unity active un Canvas
cuando el jugador lo toque. Esto es útil para mostrar mensajes de victoria, diálogos o eventos importantes.
✅ Funciona con OnTriggerEnter()
.
✅ Se puede usar para mostrar pantallas de victoria, información o efectos visuales.
✅ Fácil de implementar con cualquier GameObject.
🔹 1. Crear el Canvas a Activar
📌 Paso 1: Crear el Canvas
- Ve a
GameObject > UI > Canvas
y créalo. - Renómbralo
CanvasMensaje
. - En el
Inspector
, cambia elCanvasScaler
a:UI Scale Mode
: Scale With Screen SizeReference Resolution
: 1920×1080
📌 Paso 2: Agregar un Panel y Texto
- Dentro del
CanvasMensaje
, haz:UI > Panel
→ Renómbralo"PanelMensaje"
.UI > Text (TextMeshPro)
→ Escribe el mensaje que quieras mostrar (Ej:"¡Has encontrado un objeto especial!"
).
- Desactiva el
CanvasMensaje
en elInspector
para que no aparezca al inicio.
🔹 2. Crear el Script para Activar el Canvas
📌 Paso 3: Crear un Script ActivarCanvas.cs
- Ve a la carpeta
Scripts
(Assets/Scripts
). - Clic derecho > Create > C# Script.
- Nómbralo
ActivarCanvas.cs
y ábrelo. - Copia este código:
using UnityEngine;
public class ActivarCanvas : MonoBehaviour
{
public GameObject canvasMensaje; // Referencia al Canvas
private void Start()
{
// Asegurar que el Canvas está oculto al inicio
if (canvasMensaje != null)
{
canvasMensaje.SetActive(false);
}
else
{
Debug.LogWarning("⚠️ CanvasMensaje no asignado en el Inspector.");
}
}
private void OnTriggerEnter(Collider other)
{
if (other.CompareTag("Player")) // Verifica que sea el jugador
{
Debug.Log("¡El jugador ha colisionado con el objeto!");
// Activar el Canvas
if (canvasMensaje != null)
{
canvasMensaje.SetActive(true);
}
// Opcional: Desactivar el objeto tras la colisión
gameObject.SetActive(false);
}
}
}
🔹 3. Configurar el Objeto en Unity
📌 Paso 4: Asignar el Script al Objeto
- Selecciona el objeto en la Jerarquía (
Hierarchy
) (Ej:ObjetoEspecial
oPuerta
). - En el
Inspector
, haz clic enAdd Component
y agregaActivarCanvas
. - Arrastra el
CanvasMensaje
al campoCanvasMensaje
en elInspector
.
📌 Paso 5: Configurar el Collider
Para que el objeto detecte colisiones correctamente:
- Asegúrate de que el objeto tiene un
Collider
(BoxCollider, SphereCollider, etc.). - Marca
Is Trigger
en elInspector
.
📌 Paso 6: Asegurar que el Jugador Tiene un Tag
Correcto
- Selecciona el jugador en la Jerarquía.
- En el
Inspector
, revisa suTag
. - Si no está en
"Player"
, cámbialo.- Si
"Player"
no existe, añádelo enAdd Tag > + Player
.
- Si
🎯 Resultado Final
✅ Cuando el jugador toque el objeto, se activará el CanvasMensaje
.
✅ Se mostrará un mensaje personalizado en pantalla.
✅ El objeto desaparece tras la colisión (opcional).
✅ Si el CanvasMensaje
no está asignado, Unity mostrará una advertencia en la Console
.
