Saltar al contenido

🎮 Cómo Hacer que el Jugador Gane la Partida al Tocar un Objeto en Unity

En este tutorial, aprenderás a hacer que el jugador gane la partida cuando toque un objeto, mostrando una pantalla de victoria (CanvasVictoria).

Cuando el jugador toca el objeto, aparece la pantalla de victoria.
El objeto desaparece tras la colisión.
Se puede añadir un botón para volver al menú o reiniciar la escena.


🔹 1. Configurar el Objeto de Victoria

📌 Paso 1: Crear el Objeto en la Escena

  1. Ve a GameObject > 3D Object > Cube (o Sphere) para crear el objeto de victoria.
  2. Renómbralo ObjetoVictoria.
  3. Cambia su color o textura para que se vea diferente.

📌 Paso 2: Agregar un Collider para Detectar Colisiones

  1. Selecciona el ObjetoVictoria en la Jerarquía.
  2. Asegúrate de que tiene un Collider (BoxCollider, SphereCollider, etc.).
  3. Marca Is Trigger en el Collider ✅ para que detecte cuando el jugador lo toca.

📌 Paso 3: Darle un Tag al Jugador

  1. Selecciona el Jugador en la Jerarquía.
  2. En el Inspector, asegúrate de que su Tag sea "Player".
    • Si "Player" no existe, agrégalo en Add Tag > + Player.

🔹 2. Crear la Pantalla de Victoria (CanvasVictoria)

📌 Paso 4: Crear el Canvas

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

📌 Paso 5: Agregar un Panel con Texto

  1. Dentro del CanvasVictoria, haz:
    • UI > Panel → Renómbralo "PanelVictoria".
    • UI > Text (TextMeshPro)Escribe «¡Has Ganado!».
    • UI > Button - TextMeshPro → Renómbralo BotonVolverMenu.
  2. Cambia el texto del botón a "Volver al Menú".
  3. Desactiva CanvasVictoria en el Inspector para que no aparezca al inicio.

🔹 3. Crear el Script para la Victoria

📌 Paso 6: Crear el Script Victoria.cs

  1. Ve a la carpeta Scripts (Assets/Scripts).
  2. Clic derecho > Create > C# Script.
  3. Nómbralo Victoria.cs y ábrelo.
  4. Pega este código:
using UnityEngine;
using UnityEngine.SceneManagement;

public class Victoria : MonoBehaviour
{
    public GameObject canvasVictoria; // Referencia al Canvas de Victoria

    private void Start()
    {
        // Asegurar que el CanvasVictoria está desactivado al inicio
        if (canvasVictoria != null)
        {
            canvasVictoria.SetActive(false);
        }
        else
        {
            Debug.LogWarning("⚠️ Canvas de Victoria no asignado en el Inspector.");
        }
    }

    private void OnTriggerEnter(Collider other)
    {
        if (other.CompareTag("Player")) // Verifica si el jugador tocó el objeto
        {
            Debug.Log("¡Has ganado la partida!");

            // Activar el Canvas de Victoria
            if (canvasVictoria != null)
            {
                canvasVictoria.SetActive(true);
            }

            // Desactivar el control del jugador
            other.GetComponent<CharacterController>().enabled = false;

            // Desactivar el objeto de victoria
            gameObject.SetActive(false);
        }
    }

    // Método para volver al menú
    public void VolverAlMenu()
    {
        SceneManager.LoadScene(0); // Asegúrate de que la escena del menú es la escena 0 en Build Settings
    }
}

🔹 4. Conectar el Script al Objeto

📌 Paso 7: Asignar el Script al ObjetoVictoria

  1. Selecciona el ObjetoVictoria en la Jerarquía.
  2. Añade el script Victoria.cs (Add Component > Victoria).
  3. Arrastra el CanvasVictoria al campo CanvasVictoria en el Inspector.

📌 Paso 8: Conectar el Botón «Volver al Menú»

  1. Selecciona el BotonVolverMenu en la Jerarquía.
  2. En el Inspector, busca la sección Button > OnClick().
  3. Haz clic en + para agregar una nueva acción.
  4. Arrastra el CanvasVictoria al campo vacío.
  5. En la lista desplegable, selecciona Victoria > VolverAlMenu().

🎯 Resultado Final

Cuando el jugador toca el ObjetoVictoria, aparece el PanelVictoria.
El objeto desaparece tras la colisión.
El jugador deja de moverse.
Se puede añadir un botón para volver al menú.

🔥 ¡Pruébalo y dime si funciona! 🚀🎮

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