Saltar al contenido

🎮 Cómo Hacer un Sistema de Game Over y Reinicio de Escena en Unity

En este tutorial, aprenderás a implementar un sistema de Game Over en Unity que:

Muestra un «Game Over» cuando el jugador pierde.
Detiene el movimiento del jugador y enemigos.
Muestra un botón para reiniciar la escena.


🔹 1. Crear la Interfaz de Game Over

📌 Paso 1: Crear el Canvas

  1. En GameObject > UI > Canvas, crea un Canvas.
  2. Nómbralo «CanvasGameOver».
  3. Asegúrate de que el CanvasScaler está configurado en:
    • UI Scale Mode: Scale With Screen Size
    • Reference Resolution: 1920×1080

📌 Paso 2: Agregar el Panel de Game Over

  1. Dentro del CanvasGameOver, haz Clic derecho > UI > Panel.
  2. Nómbralo «PanelGameOver».
  3. Ajusta el tamaño y color para que cubra la pantalla.

📌 Paso 3: Agregar Texto y Botón de Reinicio

  1. Dentro del PanelGameOver, haz:
    • UI > Text (TextMeshPro)Escribe «¡Game Over!».
    • UI > Button - TextMeshPro → Renómbralo BotonReiniciar.
    • Cambia el texto del botón a "Reintentar".
  2. Desactiva el PanelGameOver en el Inspector para que no aparezca al inicio.

🔹 2. Crear el Script de Game Over

📌 Paso 4: Crear un Script GameOverManager.cs

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

public class GameOverManager : MonoBehaviour
{
    public GameObject panelGameOver; // Referencia al Panel de Game Over

    void Start()
    {
        // Asegurar que el panel de Game Over está oculto al inicio
        if (panelGameOver != null)
        {
            panelGameOver.SetActive(false);
        }
        else
        {
            Debug.LogWarning("⚠️ Panel de Game Over no asignado en el Inspector.");
        }
    }

    // Método para activar el Game Over
    public void ActivarGameOver()
    {
        if (panelGameOver != null)
        {
            panelGameOver.SetActive(true);
        }

        // Detener el tiempo del juego
        Time.timeScale = 0f; 
    }

    // Método para reiniciar la escena
    public void ReiniciarJuego()
    {
        Time.timeScale = 1f; // Reactivar el tiempo
        SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex);
    }
}

🔹 3. Integrar el Sistema de Game Over con el Jugador

📌 Paso 5: Modificar el Script de Pérdida del Jugador

Si tienes un enemigo que debe hacer que el jugador pierda al tocarlo, modifica su código (PersecucionJugador.cs o el que tengas) para que active el Game Over.

private void OnTriggerEnter(Collider other)
{
    if (other.CompareTag("Player"))
    {
        Debug.Log("¡Game Over!");

        // Buscar el GameOverManager en la escena y activar el Game Over
        GameOverManager gameOver = FindObjectOfType<GameOverManager>();
        if (gameOver != null)
        {
            gameOver.ActivarGameOver();
        }

        // Opcional: Desactivar el jugador
        other.gameObject.SetActive(false);
    }
}

🔹 4. Conectar el Botón de «Reintentar»

📌 Paso 6: Asignar el Script al Panel

  1. Crea un GameObject vacío en la Jerarquía (GameObject > Create Empty).
  2. Renómbralo GestorGameOver.
  3. Arrástrale el script GameOverManager.cs (Add Component > GameOverManager).
  4. En el Inspector, arrastra el PanelGameOver al campo PanelGameOver.

📌 Paso 7: Conectar el Botón de Reintentar

  1. Selecciona el BotonReiniciar 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 GestorGameOver al campo vacío.
  5. En la lista desplegable, selecciona GameOverManager > ReiniciarJuego().

🎯 Resultado Final

Cuando el jugador pierda, aparecerá el PanelGameOver.
El tiempo del juego se detendrá (Time.timeScale = 0).
El jugador no podrá moverse hasta que presione «Reintentar».
Al presionar «Reintentar», la escena se reiniciará.

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