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