Lokaler und globaler Raum
Teil des Abschnitts Unity-Scripting: Grundlagen der Unity-Journey von Coddy. Lektion 26 von 85.
Ein Objekt hat seine eigenen Richtungen ebenso wie die der Welt. transform.forward zeigt dorthin, wohin die Nase des Objekts weist (der blaue Pfeil in der Szenenansicht von Unity), angegeben als ein Weltvektor der Länge einer Einheit; transform.right und transform.up sind sein eigenes Rechts und Oben. Drehst du das Objekt, drehen sie sich mit ihm. Dieses Papierflugzeug ist in der Szene um 90 Grad um y gedreht, sodass es entlang der x-Achse der Welt fliegt, in die Richtung, in die es zeigt:
public float speed = 4f;
void Update()
{
transform.position += transform.forward * speed * Time.deltaTime;
}transform.Translate(Vector3.forward * speed * Time.deltaTime) bewirkt dasselbe, denn Translate interpretiert seinen Vektor im lokalen Raum des Objekts: Dort bedeutet Vector3.forward die Vorwärtsrichtung des Objekts. Übergib Space.World als zweites Argument, und stattdessen werden die Achsen der Welt verwendet. transform.Translate(Vector3.forward * speed * Time.deltaTime, Space.World) bewegt das Flugzeug also entlang der z-Achse der Welt, egal in welche Richtung es zeigt.
transform.Rotate dreht ebenfalls um die lokalen Achsen des Objekts. Von oben betrachtet, dreht ein positiver Winkel um y ein aufrecht stehendes Objekt nach rechts und ein negativer Winkel nach links, wobei sich sein transform.forward mitdreht.
Aufgabe
EinfachGib dem Panzer eine Panzersteuerung: Drehe ihn auf der Stelle und fahre in die Richtung, in die er zeigt.
- Wenn in
Update()die rechte Pfeiltaste gedrückt gehalten wird, führetransform.Rotate(0, turn * Time.deltaTime, 0);aus, und verwende für die linke Pfeiltaste-turn. - Wenn die Pfeiltaste nach oben gedrückt gehalten wird, führe
transform.Translate(Vector3.forward * speed * Time.deltaTime);aus.
Drücke „Spielen“, drehe und fahre: Der Panzer fährt dorthin, wohin seine Front zeigt. Drücke anschließend „Prüfen“.
Probier es selbst
using UnityEngine;
public class Tank : MonoBehaviour
{
public float speed = 3f;
public float turn = 90f;
void Update()
{
// Pfeiltasten rechts/links: um die y-Achse drehen. Pfeiltaste nach oben: in die Richtung fahren, in die der Panzer zeigt.
}
}
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