🎮 Cómo Hacer que un Objeto Desaparezca Tras Recogerlo en Unity
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! 🚀🎮
