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
ObjetoRecolectable
en la Jerarquía. - Asegúrate de que tiene un
Collider
(BoxCollider
,SphereCollider
, etc.). - Marca
Is Trigger
en elCollider
✅ para que detecte cuando el jugador lo toca.
📌 Paso 3: Darle un Tag
al Jugador
- Selecciona el
Jugador
en la Jerarquía. - En el
Inspector
, asegúrate de que suTag
sea"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 > Canvas
y créalo. - Renómbralo
CanvasVictoria
. - En el
Inspector
, cambia elCanvasScaler
a: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
CanvasVictoria
en elInspector
para 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.cs
y á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
ObjetoRecolectable
en la Jerarquía. - Añade el script
ObjetoRecolectable.cs
(Add Component > ObjetoRecolectable
). - Arrastra el
CanvasVictoria
al campoCanvasVictoria
en elInspector
.
📌 Paso 8: Conectar el Botón «Volver al Menú»
- Selecciona el
BotonVolverMenu
en la Jerarquía. - En el
Inspector
, busca la secciónButton > OnClick()
. - Haz clic en
+
para agregar una nueva acción. - Arrastra el
CanvasVictoria
al 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ú.
