Abstand zwischen Objekten
Teil des Abschnitts Grundlagen des Scripting in Unity der Unity-Journey von Coddy. Lektion 21 von 67.
Vector3.Distance(a, b) gibt an, wie weit zwei Punkte in Einheiten voneinander entfernt sind, gemessen in einer geraden Linie über alle drei Achsen. Es ist die Länge des Schritts zwischen ihnen, (a - b).magnitude, daher spielt die Reihenfolge von a und b keine Rolle. Von (0, 0, 0) bis (3, 0, 4) sind es 5.
Vergleiche einen Abstand mit einer Zahl, und ein Skript erkennt, wann sich etwas in der Nähe befindet. Dieser Camper kann seine Hände nur innerhalb von 4 Einheiten vom Lagerfeuer wärmen, dessen Position der Inspector festlegt:
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");
}
}Der Abstand 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 nicht berücksichtigt werden soll, vergleiche zwei Punkte mit demselben y-Wert.
Aufgabe
EinfachDer Walker durchquert einen Sumpf. Innerhalb von 3 Einheiten vom Zentrum des Sumpfs, swamp (im Inspector festgelegt), bewegt er sich mit der halben speed; weiter entfernt bewegt er sich mit voller Geschwindigkeit. Der Bewegungscode ist geschrieben: Ermittle die Geschwindigkeit, die in jedem Frame verwendet werden soll, und lasse das Feld speed selbst unverändert.
Drücke Play und gehe durch den Sumpf, dann drücke Check.
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 vom Sumpf mit halber Geschwindigkeit.
Vector3 direction = new Vector3(Input.GetAxisRaw("Horizontal"), 0, Input.GetAxisRaw("Vertical"));
transform.position += direction.normalized * s * Time.deltaTime;
}
}
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Grundlagen des Scripting in Unity
1Dein erstes Skript
Hallo, UnityPlatziere den WürfelBewege dich in jedem FrameDrehe dich jede SekundeSteuere mit den TastenRückblick: Steuere den Würfel4Vektoren
Vektoren addierenRichtungenLokaler und globaler RaumDiagonale GeschwindigkeitAbstand zwischen ObjektenVector3 ist ein StructRückblick: Drohnenpilot7Projekt: Fang den Stern
Der FängerEin fallender Stern10Der Lebenszyklus eines Skripts
Awake und StartUpdate und LateUpdateOnEnable und OnDisableDie Reihenfolge im LebenszyklusRückblick: Lifecycle Logger5Transformationen und Hierarchie
Eltern und KinderSkalierungDinge ansehenAuf einen Punkt zubewegenRückblick: Umlaufender Mond8Dinge finden
Nach Namen findenTagsNach Typ findenReferenzen schlagen FindUnitys NullRückblick: Nächste Münze11Projekt: Weiche den Blöcken aus
Der LäuferFallende Blöcke6GameObjects und Komponenten
Referenzen im InspectorEine Komponente abrufenFehlende KomponentenEine Komponente hinzufügenRequireComponentEin- und AusblendenRückblick: Lichtschalter