Abstand zwischen Objekten
Teil des Abschnitts Unity-Scripting: Grundlagen der Unity-Journey von Coddy. Lektion 28 von 85.
Vector3.Distance(a, b) gibt an, wie weit zwei Punkte voneinander entfernt sind, gemessen in Einheiten auf einer geraden Linie durch alle drei Achsen. Das ist die Länge der Strecke zwischen ihnen, (a - b).magnitude, daher spielt die Reihenfolge von a und b keine Rolle. Von (0, 0, 0) bis (3, 0, 4) beträgt sie 5.
Vergleicht man eine Entfernung mit einer Zahl, weiß ein Skript, wann sich etwas in der Nähe befindet. Dieser Camper kann sich nur innerhalb von 4 Einheiten vom Lagerfeuer die Hände wärmen, dessen Position im Inspector festgelegt wird:
public Vector3 campfire = new Vector3(3, 0, 4);
void Update()
{
float d = Vector3.Distance(transform.position, campfire);
if (d < 4f && Input.GetKeyDown(KeyCode.Space))
{
Debug.Log("You warm your hands");
}
}Die Entfernung berücksichtigt auch die Höhe: Ein Camper, der sich 5 Einheiten über dem Feuer befindet, ist 5 Einheiten davon entfernt, nicht 0. Wenn die Höhe keine Rolle spielen soll, vergleiche zwei Punkte mit demselben y-Wert.
Aufgabe
EinfachVerringere die Geschwindigkeit des Läufers im Sumpf auf die Hälfte.
- Schreibe unter
float s = speed;if (Vector3.Distance(transform.position, swamp) < 3f). - Setze darin
s = speed / 2;. Lass das Feldspeedund die Bewegungszeilen unverändert.
Drücke „Spielen“ und gehe direkt durch den Sumpf: Der Läufer wird darin langsamer. Drücke dann „Prüfen“.
Probier es selbst
using UnityEngine;
public class Walker : MonoBehaviour
{
public float speed = 4f;
public Vector3 swamp = new Vector3(0, 0.5f, 0);
void Update()
{
float s = speed;
// Bewege dich innerhalb von 3 Einheiten um den Sumpf mit halber Geschwindigkeit.
Vector3 direction = new Vector3(Input.GetAxisRaw("Horizontal"), 0, Input.GetAxisRaw("Vertical"));
transform.position += direction.normalized * s * Time.deltaTime;
}
}
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