Landen oder verfehlen
Teil des Abschnitts Unity-Scripting: Grundlagen der Unity-Journey von Coddy. Lektion 85 von 85.
Diese Herausforderung vervollständigt das Turmspiel und den ersten Abschnitt des Kurses: einen Kran, einen fallenden Block und einen Landetest mit Mathf.Abs.
Aufgabe
SchwerLass jeden Block auf dem Stapel landen oder herunterfallen.
- Wenn der fallende Block bis auf y + 1 von
topheruntergefallen ist und höchstens 1 vontops x entfernt ist, setze sein y genau auf diesen Wert, mache ihn zutop, leerefallingund protokolliere"Stack: " + count. - Andernfalls zerstöre ihn unterhalb von y =
-3, leerefallingund protokolliereMissed!.
Drücke auf „Spielen“ und stapel die Blöcke: Bei jeder Landung wird die Höhe protokolliert. Drücke anschließend auf „Prüfen“.
Probier es selbst
using UnityEngine;
public class Crane : MonoBehaviour
{
[SerializeField] private GameObject blockPrefab;
[SerializeField] private Transform top;
[SerializeField] private float craneSpeed = 3f;
[SerializeField] private float craneEdge = 4f;
[SerializeField] private float fallSpeed = 7f;
private float direction = 1f;
private Transform falling;
private int stack;
void Update()
{
transform.position += new Vector3(direction * craneSpeed * Time.deltaTime, 0f, 0f);
if (transform.position.x > craneEdge) direction = -1f;
if (transform.position.x < -craneEdge) direction = 1f;
bool drop = Input.GetKeyDown(KeyCode.Space) || Input.GetMouseButtonDown(0);
if (drop && falling == null)
{
Vector3 spot = new Vector3(transform.position.x, transform.position.y - 1f, 0f);
falling = Instantiate(blockPrefab, spot, Quaternion.identity).transform;
}
if (falling != null)
{
falling.position += Vector3.down * fallSpeed * Time.deltaTime;
// Auf dem Stapel landen: die nächste Lektion.
}
}
}
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
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