Drops
Lektion 14 von 19 im Kurs Unity-Spiel: Brick Breaker von Coddy.
Ein zerstörter Stein lässt manchmal ein Power-up fallen, das auf den Schläger zufällt. Ob es fällt, entscheidet ein Zufallswurf: Random.value ist eine zufällige Gleitkommazahl zwischen 0 und 1, daher ist Random.value < 0.15f ungefähr 15 von 100 Mal wahr. Wenn du die Chance in einem Feld speicherst, kannst du sie anpassen und in einem Test auf 1 setzen, damit jedes Mal ein Power-up fällt, oder auf 0, damit keines fällt.
Welches Power-up fällt, entscheidet ein zweiter Zufallswurf: ein zufälliger Index in einem Array von Prefabs. Random.Range schließt bei Ganzzahlen den Maximalwert aus, daher kann Random.Range(0, array.Length) jedes Element auswählen. Die Beute eines Gegners:
public GameObject[] loot;
public float lootChance = 0.25f;
void DropLoot()
{
if (Random.value >= lootChance) return;
int pick = Random.Range(0, loot.Length);
Instantiate(loot[pick], transform.position, Quaternion.identity);
}Ein Power-up fällt mit gleichmäßiger Geschwindigkeit, indem es sich in jedem Frame selbst bewegt, und zerstört sich selbst, sobald es sich unterhalb des Spielbereichs befindet, damit verpasste Power-ups sich nicht ansammeln. Sein Prefab hat ein kinematisches Rigidbody und einen Trigger-Collider. Dadurch weiß die Physik, dass es sich bewegt, und es kann erkennen, wann es den Schläger erreicht.
Aufgabe
SchwerZerbrochene Ziegel lassen manchmal ein Power-up fallen.
- Füge in
PowerUpfallSpeed = 3fundbottomY = -9fhinzu; lasse das Objekt inUpdate()mit fallSpeed pro Sekunde fallen und zerstöre es unterhalb von bottomY. - Füge in
GameManagerpublic GameObject[] powerUps;undpublic float dropChance = 0.15f;hinzu. - Wenn in BrickBroken
Random.value < dropChancegilt, instanziierepowerUps[Random.Range(0, powerUps.Length)]an der Position des Ziegels.
Drücke „Spielen“ und zerbrich Ziegel: Ab und zu lässt einer ein Power-up fallen (das Auffangen kommt als Nächstes). Drücke anschließend „Prüfen“.
Probier es selbst
using UnityEngine;
public class PowerUp : MonoBehaviour
{
// Das letzte Kapitel: Power-ups, die aus zerstörten Blöcken fallen.
}
Alle Lektionen in Unity-Spiel: Brick Breaker
Übe selbstständig: Unity-Playground