Sammelobjekte
Teil des Abschnitts Physik und Gameplay der Unity-Journey von Coddy. Lektion 17 von 71.
Ein aufhebbarer Gegenstand ist ein Auslöser mit einem eigenen Skript. Wenn etwas hineingerät, prüft der Gegenstand, ob es sich um den Spieler handelt, überträgt seinen Effekt und zerstört sich selbst. Das Skript des Spielers behält das Ergebnis und stellt dafür eine öffentliche Methode bereit. Dieses Gesundheitspaket heilt alles, was ein Health-Skript hat:
// 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, am Spieler
public int hp = 50;
public void Heal(int amount)
{
hp = Mathf.Min(hp + amount, 100);
Debug.Log("HP: " + hp);
}other.TryGetComponent(out Health health) ist für eine Kiste, die in das Paket hineingleitet, false. Daher kann es nur ein Objekt mit einem Health-Skript aufnehmen, und ein Spieler mit voller Gesundheit lässt das Paket für später liegen. Das Paket findet den Spieler über other, sodass kein Paket eine Inspector-Referenz benötigt und ein Level fünfzig davon enthalten kann. Heal ist public, weil ein anderes Skript es aufruft, und die Obergrenze von 100 befindet sich in Health, dem einzigen Ort, an dem hp verwaltet wird. Destroy(gameObject) entfernt das Paket; Destroy(other.gameObject) würde den Spieler entfernen.
Aufgabe
EinfachLass die Munitionskisten den Blaster auffüllen (ammo 4, maxAmmo 10).
- Füge in
Blaster.cspublic int AddAmmo(int amount)hinzu:int taken = Mathf.Min(amount, maxAmmo - ammo);, addiere den Wert zuammo, gib"Ammo: " + ammoaus und gibtakenzurück. - Rufe in
AmmoCrate.cs, wennother.TryGetComponent(out Blaster blaster)zutrifft,blaster.AddAmmo(amount);undDestroy(gameObject);auf.
Drücke auf „Spielen“ und gehe nach rechts: In der Konsole wird Ammo: 7 und dann Ammo: 10 angezeigt. Drücke anschließend auf „Prüfen“.
Probier es selbst
using UnityEngine;
public class AmmoCrate : MonoBehaviour
{
public int amount = 3;
void OnTriggerEnter(Collider other)
{
// Der Blaster des Spielers nimmt die Munition auf, und die Kiste verschwindet
}
}
Alle Lektionen in Physik und Gameplay
1Rigidbody
Schwerkraft und MasseMit AddForce schiebenMit einem Impuls springenFixedUpdate für PhysikGeschwindigkeitKinematische KörperRückblick: Startrampe4Coroutinen
AufrufenWiederholt aufrufen, Aufruf abbrechenDeine erste CoroutineSchleifen in CoroutinenCoroutinen beendenRückblick: Countdown10Projekt: Arena-Flucht
Die ArenaJäger2Kollisionen
OnCollisionEnterWas habe ich getroffen?Beim Aufprall zerbrechenAuf dem Boden stehenAbprallen und ReibungCollider-FormenRückblick: Zerstörbare Wand5Projekt: Münzrausch
Der rollende BallMünzen zum Einsammeln11Abschließende Herausforderungen
KanonenreichweiteBewegliche ZieleMurmelgolfIns LochEscape RoomDie TürÜbe selbstständig: Unity-Playground