Zufälliges Erzeugen
Teil des Abschnitts Unity-Scripting: Grundlagen der Unity-Journey von Coddy. Lektion 68 von 85.
Random.Range(min, max) wählt eine Zufallszahl aus. Welche Werte zurückgegeben werden können, hängt vom Typ der Zahlen ab, die du übergibst. Bei Floats kann jeder Wert von min bis max herauskommen, einschließlich beider Grenzen. Bei Ints wird max selbst ausgeschlossen. Für einen Würfelwurf fragst du daher nach einer Zahl von 1 bis 7:
int roll = Random.Range(1, 7); // 1, 2, 3, 4, 5 oder 6
Debug.Log("You rolled " + roll);Die int-Version schließt max aus, damit Random.Range(0, names.Length) immer ein gültiger Array-Index ist. Das bedeutet auch, dass Random.Range(-5, 5) nur die ganzen Zahlen von -5 bis 4 ergibt, selbst wenn du das Ergebnis in einem Float speicherst. Schreibe Random.Range(-5f, 5f), um einen beliebigen Wert dazwischen zu erhalten.
Für Punkte und Richtungen im 3D-Raum hat Unity zwei fertige Zufallsvektoren. Random.insideUnitSphere ist ein zufälliger Punkt innerhalb einer Kugel mit Radius 1 um (0, 0, 0). Random.onUnitSphere ist ein zufälliger Punkt auf der Oberfläche dieser Kugel und damit eine zufällige Richtung der Länge 1. transform.position + Random.insideUnitSphere * 2f ist ein Punkt, der in eine beliebige Richtung bis zu 2 Einheiten entfernt liegt, auch nach oben und unten.
Aufgabe
MittelBei jedem Klick fällt eine Kiste von einer zufälligen Stelle über dem Boden herunter.
- Lege innerhalb des Klick-
iffloat x = Random.Range(-4f, 4f);fest und gehe beifloat zgenauso vor. - Rufe
Instantiate(cratePrefab, new Vector3(x, 5, z), Quaternion.identity);auf.
Drücke „Spielen“ und klicke ein paar Mal: Die Kisten fallen an neuen Stellen herunter. Drücke dann „Prüfen“.
Probier es selbst
using UnityEngine;
public class CrateDropper : MonoBehaviour
{
public GameObject cratePrefab;
void Update()
{
if (Input.GetMouseButtonDown(0))
{
// Lasse eine Kiste an einer zufälligen Position fallen: x und z von -4 bis 4, y = 5
}
}
}
Alle Lektionen in Unity-Scripting: Grundlagen
1C#-Grundlagen in Unity
Hallo, UnityVariablenDezimalzahlen brauchen ein fText in der KonsoleVariablen, die sich etwas merkenIf und ElseZahlen vergleichenRückblick: Münzsammler7Schleifen und Methoden
Wiederholen mit forSchleifen in SchleifenEine Methode schreibenMethoden mit RückgabewertArraysRückblick: Treppe10Dinge finden
Nach Namen suchenTagsNach Typ suchenReferenzen schlagen SuchenUnitys NullRückblick: nächste Münze13Projekt: Weiche den Blöcken aus
Der LäuferBlöcke vom Himmel2Bring es in Bewegung
Platziere den WürfelBewege ihn in jedem FrameDrehe ihn jede SekundeSteuere mit den TastenRückblick: Fahre den Würfel5Vektoren
Vektoren addierenRichtungenLokaler und globaler RaumDiagonale GeschwindigkeitAbstand zwischen ObjektenVector3 ist eine StrukturRückblick: Drohnenpilot8GameObjects und Komponenten
Referenzen im InspectorEine Komponente abrufenFehlende KomponentenEine Komponente hinzufügenRequireComponentEin- und AusblendenRückblick: Lichtschalter11Prefabs und Erzeugen von Instanzen
Prefabs und InstantiateNach Zeitintervall erzeugenIn einem Raster erzeugenListen von ObjektenDas Neueste zurücknehmenZerstörenZufälliges ErzeugenRückblick: Feuerwerk14Abschließende Herausforderungen
MünzmagnetDie Straße überquerenStraßenverkehrTurmbauerLanden oder verfehlen3Der Inspector
Inspector-FelderSerializeFieldFließkommazahlen und MathfInspector-AttributeRückblick: Aufzug6Transformationen und Hierarchie
Eltern und KinderHisse die FlaggeSkalierungDinge anschauenAuf einen Punkt zubewegenRückblick: Mond in Umlaufbahn9Projekt: Fang den Stern
Der FängerEin fallender Stern12Der Lebenszyklus eines Skripts
Awake und StartUpdate und LateUpdateOnEnable und OnDisableDie Reihenfolge im LebenszyklusRückblick: Lifecycle LoggerÜbe selbstständig: Unity-Playground