Menu
CoddyTech

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.

challenge icon

Aufgabe

Einfach

Der 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;
    }
}
quiz iconTeste dich selbst

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