Dinge anschauen
Teil des Abschnitts Unity-Scripting: Grundlagen der Unity-Journey von Coddy. Lektion 34 von 85.
transform.LookAt(point) dreht ein Objekt so, dass seine Vorwärtsachse, der blaue z-Pfeil, auf eine Position in der Welt zeigt. Es dreht das Objekt, bewegt es aber nicht. Dieser Suchscheinwerfer steht auf einem Turm bei (0, 6, 0) und richtet sich auf das Tor bei (4, 0, 10):
void Start()
{
transform.LookAt(new Vector3(4, 0, 10));
}Das Tor liegt tiefer als die Lampe, deshalb neigt sich der Suchscheinwerfer beim Drehen auch nach unten: LookAt richtet das Objekt direkt auf den Punkt aus, auch nach oben oder unten. Danach zeigt transform.forward von der Lampe zum Tor.
Wird LookAt in Start() aufgerufen, richtet es das Objekt einmal aus. Wird es in Update() aufgerufen, richtet es das Objekt in jedem Frame erneut aus, sodass das Objekt weiterhin auf den Punkt zeigt, während sich das Objekt oder der Punkt bewegt. Das Argument ist immer eine Position: LookAt(Vector3.forward) richtet das Objekt auf den Weltpunkt (0, 0, 1) aus, einen Punkt neben dem Mittelpunkt der Welt, unabhängig davon, wo sich das Objekt gerade befindet.
Aufgabe
MittelLass den Rover in die Richtung blicken, in die er fährt.
- Schreibe unter den Kommentar in
Update()if (move != Vector3.zero), damit ein stehender Rover seine Blickrichtung beibehält. - Rufe darin
transform.LookAt(transform.position + move);auf.
Drücke auf „Spielen“ und fahre: Die Vorderseite des Rovers dreht sich in die Richtung, in die er fährt. Drücke dann auf „Prüfen“.
Probier es selbst
using UnityEngine;
public class Rover : MonoBehaviour
{
public float speed = 3f;
void Update()
{
Vector3 move = Vector3.zero;
if (Input.GetKey(KeyCode.RightArrow)) move += Vector3.right;
if (Input.GetKey(KeyCode.LeftArrow)) move += Vector3.left;
if (Input.GetKey(KeyCode.UpArrow)) move += Vector3.forward;
if (Input.GetKey(KeyCode.DownArrow)) move += Vector3.back;
move = move.normalized;
transform.position += move * speed * Time.deltaTime;
// Drehe den Rover so, dass er in Fahrtrichtung 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