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
- En
GameObject > UI > Canvas, crea un Canvas. - Nómbralo «CanvasGameOver».
- Asegúrate de que el
CanvasScalerestá configurado en:UI Scale Mode: Scale With Screen SizeReference Resolution: 1920×1080
📌 Paso 2: Agregar el Panel de Game Over
- Dentro del
CanvasGameOver, hazClic derecho > UI > Panel. - Nómbralo «PanelGameOver».
- Ajusta el tamaño y color para que cubra la pantalla.
📌 Paso 3: Agregar Texto y Botón de Reinicio
- Dentro del
PanelGameOver, haz:UI > Text (TextMeshPro)→ Escribe «¡Game Over!».UI > Button - TextMeshPro→ RenómbraloBotonReiniciar.- Cambia el texto del botón a
"Reintentar".
- Desactiva el
PanelGameOveren elInspectorpara que no aparezca al inicio.
🔹 2. Crear el Script de Game Over
📌 Paso 4: Crear un Script GameOverManager.cs
- Ve a la carpeta
Scripts(Assets/Scripts). - Clic derecho > Create > C# Script.
- Nómbralo
GameOverManager.csy ábrelo. - 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
- Crea un
GameObjectvacío en la Jerarquía (GameObject > Create Empty). - Renómbralo
GestorGameOver. - Arrástrale el script
GameOverManager.cs(Add Component > GameOverManager). - En el
Inspector, arrastra elPanelGameOveral campoPanelGameOver.
📌 Paso 7: Conectar el Botón de Reintentar
- Selecciona el
BotonReiniciaren la Jerarquía. - En el
Inspector, busca la secciónButton > OnClick(). - Haz clic en
+para agregar una nueva acción. - Arrastra el
GestorGameOveral campo vacío. - 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á.

