En este tutorial, aprenderás a hacer que un objeto recolectable (por ejemplo, una llave, una moneda o un artefacto) active una pantalla de victoria (Canvas con «¡Ganaste!») cuando el jugador lo recoja.
✅ Cuando el jugador toca el objeto, aparece un PanelVictoria.
✅ El objeto recolectable desaparece después de ser recogido.
✅ Se puede agregar un botón para reiniciar la escena o volver al menú.
🔹 1. Crear el Objeto Recolectable
📌 Paso 1: Crear el Objeto en la Escena
- Ve a
GameObject > 3D Object > Cube (o Sphere)para crear un objeto recolectable. - Renómbralo
ObjetoRecolectable. - Cambia su color o textura para que se vea diferente.
📌 Paso 2: Agregar un Collider para Detectar Colisiones
- Selecciona el
ObjetoRecolectableen 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 «¡Ganaste!».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 ObjetoRecolectable.cs
- Ve a la carpeta
Scripts(Assets/Scripts). - Clic derecho > Create > C# Script.
- Nómbralo
ObjetoRecolectable.csy ábrelo. - Pega este código:
using UnityEngine;
public class ObjetoRecolectable : 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("¡Objeto recogido! Activando pantalla de victoria.");
// Activar el Canvas de Victoria
if (canvasVictoria != null)
{
canvasVictoria.SetActive(true);
}
// Desactivar el objeto recolectable
gameObject.SetActive(false);
}
}
}
🔹 4. Conectar el Script al Objeto
📌 Paso 7: Asignar el Script al ObjetoRecolectable
- Selecciona el
ObjetoRecolectableen la Jerarquía. - Añade el script
ObjetoRecolectable.cs(Add Component > ObjetoRecolectable). - 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
ObjetoRecolectable > VolverAlMenu().
🎯 Resultado Final
✅ Cuando el jugador toca el objeto recolectable, aparece el PanelVictoria.
✅ El objeto desaparece después de ser recogido.
✅ Se puede añadir un botón para volver al menú.
