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
- Ve a
GameObject > 3D Object > Cube (o Sphere)para crear el objeto de victoria. - Renómbralo
ObjetoVictoria. - Cambia su color o textura para que se vea diferente.
📌 Paso 2: Agregar un Collider para Detectar Colisiones
- Selecciona el
ObjetoVictoriaen la Jerarquía. - Asegúrate de que tiene un
Collider(BoxCollider,SphereCollider, etc.). - Marca
Is Triggeren elCollider✅ para que detecte cuando el jugador lo toca.
📌 Paso 3: Darle un Tag al Jugador
- Selecciona el
Jugadoren la Jerarquía. - En el
Inspector, asegúrate de que suTagsea"Player".- Si
"Player"no existe, agrégalo enAdd Tag > + Player.
- Si
🔹 2. Crear la Pantalla de Victoria (CanvasVictoria)
📌 Paso 4: Crear el Canvas
- Ve a
GameObject > UI > Canvasy créalo. - Renómbralo
CanvasVictoria. - En el
Inspector, cambia elCanvasScalera:UI Scale Mode: Scale With Screen SizeReference Resolution: 1920×1080
📌 Paso 5: Agregar un Panel con Texto
- Dentro del
CanvasVictoria, haz:UI > Panel→ Renómbralo"PanelVictoria".UI > Text (TextMeshPro)→ Escribe «¡Has Ganado!».UI > Button - TextMeshPro→ RenómbraloBotonVolverMenu.
- Cambia el texto del botón a
"Volver al Menú". - Desactiva
CanvasVictoriaen elInspectorpara que no aparezca al inicio.
🔹 3. Crear el Script para la Victoria
📌 Paso 6: Crear el Script Victoria.cs
- Ve a la carpeta
Scripts(Assets/Scripts). - Clic derecho > Create > C# Script.
- Nómbralo
Victoria.csy ábrelo. - 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
- Selecciona el
ObjetoVictoriaen la Jerarquía. - Añade el script
Victoria.cs(Add Component > Victoria). - Arrastra el
CanvasVictoriaal campoCanvasVictoriaen elInspector.
📌 Paso 8: Conectar el Botón «Volver al Menú»
- Selecciona el
BotonVolverMenuen la Jerarquía. - En el
Inspector, busca la secciónButton > OnClick(). - Haz clic en
+para agregar una nueva acción. - Arrastra el
CanvasVictoriaal campo vacío. - 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! 🚀🎮
