Diagonale Geschwindigkeit
Teil des Abschnitts Unity-Scripting: Grundlagen der Unity-Journey von Coddy. Lektion 27 von 85.
Halte die rechte und die obere Pfeiltaste gleichzeitig gedrückt, und die Rohachsen geben die Richtung (1, 0, 1) an. Ihre Länge, .magnitude, ist die Quadratwurzel aus 1 + 1, also etwa 1,41. Ein Läufer, der sich damit bewegt, legt auf einer Diagonale in derselben Zeit 1,41 Einheiten zurück wie geradeaus 1 Einheit: 41 % schneller.
.normalized gibt eine Kopie eines Vektors zurück, die in dieselbe Richtung zeigt und genau 1 Einheit lang ist: (1, 0, 1) wird zu etwa (0,71, 0, 0,71), und (0, 0, 5) wird zu (0, 0, 1). Mit einer Geschwindigkeit multipliziert, bewegt er sich unabhängig von der Richtung mit dieser Geschwindigkeit. Diese Biene fliegt mit 2 Einheiten pro Sekunde auf die Blume zu, egal, ob die Blume weit entfernt oder nah ist; ohne .normalized würde sie umso schneller fliegen, je weiter die Blume entfernt ist:
public Vector3 flower = new Vector3(4, 1, 3);
public float speed = 2f;
void Update()
{
Vector3 toFlower = flower - transform.position;
transform.position += toFlower.normalized * speed * Time.deltaTime;
}Vector3.zero.normalized bleibt (0, 0, 0), da null keine Richtung hat. v.normalized lässt v unverändert; v.Normalize() ändert v selbst.
Aufgabe
EinfachLass den Walker sich diagonal mit derselben Geschwindigkeit bewegen.
- Erstelle in
Update()Vector3 direction = new Vector3(Input.GetAxisRaw("Horizontal"), 0, Input.GetAxisRaw("Vertical"));. - Addiere
direction.normalized * speed * Time.deltaTimezutransform.position.
Drücke „Spielen“ und halte zwei Pfeiltasten gedrückt: Der Walker bewegt sich diagonal nicht schneller als geradeaus. Klicke dann auf „Prüfen“.
Probier es selbst
using UnityEngine;
public class Walker : MonoBehaviour
{
public float speed = 4f;
void Update()
{
// Pfeiltasten oder WASD: Bewege dich entlang der x- und z-Achse mit speed, auch diagonal mit derselben Geschwindigkeit.
}
}
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