Drops
Lektion 13 von 16 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
Schwer- Füge in
PowerUppublic float fallSpeed = 3fundpublic float bottomY = -9fhinzu. Bewege dich inUpdate()mitfallSpeedEinheiten pro Sekunde nach unten und zerstöre das Power-up, sobald sein y-Wert kleiner alsbottomYist. - Füge in
GameManagerpublic GameObject[] powerUps(in der Szene werden die WidePowerUp- und MultiPowerUp-Prefabs verknüpft) undpublic float dropChance = 0.15fhinzu. - Erzeuge in
BrickBrokenmit der WahrscheinlichkeitdropChanceein zufälliges Element auspowerUpsan der Stelle des zerstörten Steins.
Die Power-ups fallen vorerst durch den Schläger hindurch: Als Nächstes kommt das Auffangen.
Drücke Play, zerstöre Steine, bis eines herunterfällt, und klicke dann auf Check.
Probier es selbst
using UnityEngine;
public class PowerUp : MonoBehaviour
{
// Das letzte Kapitel: Power-ups, die aus zerstörten Ziegeln fallen.
}
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.