Objetos coleccionables
Parte de la sección Física y jugabilidad del Journey de Unity de Coddy. Lección 17 de 71.
Un objeto recogible es un disparador con su propio script. Cuando algo entra, el objeto recogible comprueba que sea el jugador, le transfiere su efecto y se destruye. El script del jugador conserva el resultado y ofrece un método público para ello. Este paquete de salud cura a cualquier objeto que tenga un script Health:
// HealthPack.cs
public int amount = 25;
void OnTriggerEnter(Collider other)
{
if (other.TryGetComponent(out Health health) && health.hp < 100)
{
health.Heal(amount);
Destroy(gameObject);
}
}// Health.cs, en el jugador
public int hp = 50;
public void Heal(int amount)
{
hp = Mathf.Min(hp + amount, 100);
Debug.Log("HP: " + hp);
}other.TryGetComponent(out Health health) es false en el caso de una caja que se desliza hasta el paquete, así que solo un objeto con un script Health puede recogerlo, y un jugador con la salud al máximo deja el paquete para más tarde. El paquete encuentra al jugador a través de other, así que no necesita ninguna referencia del Inspector, y un nivel puede contener cincuenta paquetes. Heal es public porque otro script lo llama, y el límite de 100 está en Health, el único lugar que controla hp. Destroy(gameObject) elimina el paquete; Destroy(other.gameObject) eliminaría al jugador.
Desafío
FácilHaz que las cajas de munición recarguen el Blaster (ammo 4, maxAmmo 10).
- En
Blaster.cs, añadepublic int AddAmmo(int amount):int taken = Mathf.Min(amount, maxAmmo - ammo);, súmalo aammo, registra"Ammo: " + ammoy devuelvetaken. - En
AmmoCrate.cs, cuandoother.TryGetComponent(out Blaster blaster), llama ablaster.AddAmmo(amount);y aDestroy(gameObject);.
Pulsa «Jugar» y camina hacia la derecha: la consola muestra Ammo: 7 y después Ammo: 10. Luego, pulsa «Comprobar».
Pruébalo tú mismo
using UnityEngine;
public class AmmoCrate : MonoBehaviour
{
public int amount = 3;
void OnTriggerEnter(Collider other)
{
// El Blaster del jugador recoge la munición y la caja desaparece
}
}
Todas las lecciones de Física y jugabilidad
1Cuerpo rígido
Gravedad y masaEmpujar con AddForceSaltar con un impulsoFixedUpdate para físicaVelocidadCuerpos cinemáticosRepaso: plataforma de lanzamiento4Corrutinas
InvocarInvokeRepeating y CancelInvokeTu primera corrutinaBucles en corrutinasDetener corrutinasRepaso: cuenta regresiva10Proyecto: Escape de la arena
La arenaCazadores2Colisiones
OnCollisionEnter¿Qué golpeé?Romper al impactarDe pie sobre el sueloRebote y fricciónFormas de los collidersRepaso: muro destructible5Proyecto: Carrera de Monedas
La pelota rodanteMonedas para recoger3Disparadores
Colisionadores de tipo triggerOnTriggerEnterObjetos coleccionablesLas cajas guardan el restoZonas letalesEntrada y salidaRepaso: llave y puertaPractica por tu cuenta: Playground de Unity