En este tutorial, aprenderás a hacer que un objeto desaparezca cuando el jugador lo recoja, utilizando OnTriggerEnter() para detectar la colisión.
✅ Cuando el jugador toca el objeto, este desaparece.
✅ Puede activarse una acción extra (como sumar puntos o mostrar un mensaje).
✅ Fácil de implementar en cualquier objeto recolectable.
🔹 1. Configurar 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 el Script para Desaparecer el Objeto
📌 Paso 4: Crear el Script Recolectable.cs
- Ve a la carpeta
Scripts(Assets/Scripts). - Clic derecho > Create > C# Script.
- Nómbralo
Recolectable.csy ábrelo. - Pega este código:
using UnityEngine;
public class Recolectable : MonoBehaviour
{
private void OnTriggerEnter(Collider other)
{
if (other.CompareTag("Player")) // Verifica si el jugador tocó el objeto
{
Debug.Log("¡Objeto recogido!");
// Desactivar el objeto recolectable
gameObject.SetActive(false);
// Opcional: Sumar puntos al jugador o activar una animación
// GameManager.instance.SumarPuntos(10);
}
}
}
🔹 3. Conectar el Script al Objeto
📌 Paso 5: Asignar el Script al ObjetoRecolectable
- Selecciona el
ObjetoRecolectableen la Jerarquía. - Añade el script
Recolectable.cs(Add Component > Recolectable).
🔹 4. Opcional: Destruir el Objeto en Lugar de Desactivarlo
Si en lugar de desactivar el objeto (SetActive(false)) prefieres destruirlo completamente, cambia esta línea:
gameObject.SetActive(false);
Por esta otra:
Destroy(gameObject);
🔹 Diferencias:
SetActive(false): El objeto desaparece pero sigue en la escena (se puede volver a activar).Destroy(gameObject): El objeto se elimina completamente de la escena.
🎯 Resultado Final
✅ Cuando el jugador toca el objeto, este desaparece.
✅ Puede activarse una acción extra (sumar puntos o animación).
✅ Funciona tanto con SetActive(false) como con Destroy().
🔥 ¡Pruébalo y dime si funciona! 🚀🎮

