🎮 Cómo Hacer que un Objeto Active un Canvas al Colisionar en Unity

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

  1. Ve a GameObject > UI > Canvas y créalo.
  2. RenĂłmbralo CanvasMensaje.
  3. En el Inspector, cambia el CanvasScaler a:
    • UI Scale Mode: Scale With Screen Size
    • Reference Resolution: 1920×1080

📌 Paso 2: Agregar un Panel y Texto

  1. Dentro del CanvasMensaje, haz:
    • UI > Panel → RenĂłmbralo "PanelMensaje".
    • UI > Text (TextMeshPro) → Escribe el mensaje que quieras mostrar (Ej: "¡Has encontrado un objeto especial!").
  2. Desactiva el CanvasMensaje en el Inspector para que no aparezca al inicio.

🔹 2. Crear el Script para Activar el Canvas

📌 Paso 3: Crear un Script ActivarCanvas.cs

  1. Ve a la carpeta Scripts (Assets/Scripts).
  2. Clic derecho > Create > C# Script.
  3. Nómbralo ActivarCanvas.cs y ábrelo.
  4. 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

  1. Selecciona el objeto en la JerarquĂ­a (Hierarchy) (Ej: ObjetoEspecial o Puerta).
  2. En el Inspector, haz clic en Add Component y agrega ActivarCanvas.
  3. Arrastra el CanvasMensaje al campo CanvasMensaje en el Inspector.

📌 Paso 5: Configurar el Collider

Para que el objeto detecte colisiones correctamente:

  1. AsegĂşrate de que el objeto tiene un Collider (BoxCollider, SphereCollider, etc.).
  2. Marca Is Trigger en el Inspector.

📌 Paso 6: Asegurar que el Jugador Tiene un Tag Correcto

  1. Selecciona el jugador en la JerarquĂ­a.
  2. En el Inspector, revisa su Tag.
  3. Si no está en "Player", cámbialo.
    • Si "Player" no existe, añádelo en Add Tag > + Player.

🎯 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.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Información básica sobre protección de datos Ver más

  • Responsable: Tomas Gonzalez.
  • Finalidad:  Moderar los comentarios.
  • LegitimaciĂłn:  Por consentimiento del interesado.
  • Destinatarios y encargados de tratamiento:  No se ceden o comunican datos a terceros para prestar este servicio.
  • Derechos: Acceder, rectificar y suprimir los datos.
  • InformaciĂłn Adicional: Puede consultar la informaciĂłn detallada en la PolĂ­tica de Privacidad.

error: Content is protected !!
Este sitio web utiliza cookies, si necesitas más informaciĂłn puedes visitar nuestra polĂ­tica de privacidad   
Privacidad