Saltar al contenido

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

Etiquetas:

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 !!

Descubre más desde Tomás González: Formador y Desarrollador Web

Suscríbete ahora para seguir leyendo y obtener acceso al archivo completo.

Seguir leyendo

Este sitio web utiliza cookies, si necesitas más información puedes visitar nuestra política de privacidad    Ver
Privacidad