Menu
CoddyTech

Odległość między obiektami

Część sekcji Podstawy skryptów w Unity ścieżki Unity w Coddy. Lekcja 21 z 67.

Vector3.Distance(a, b) określa odległość między dwoma punktami, w jednostkach, mierzoną w linii prostej wzdłuż wszystkich trzech osi. Jest to długość kroku między nimi, (a - b).magnitude, więc kolejność a i b nie ma znaczenia. Od (0, 0, 0) do (3, 0, 4) wynosi 5.

Porównując odległość z liczbą, skrypt wie, kiedy coś jest blisko. Ten obozowicz może ogrzać dłonie tylko w odległości 4 jednostek od ogniska, którego położenie ustawia Inspector:

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");
    }
}

Odległość uwzględnia również wysokość: obozowicz znajdujący się 5 jednostek nad ogniem jest od niego oddalony o 5 jednostek, a nie o 0. Gdy wysokość nie powinna być uwzględniana, porównaj dwa punkty o tej samej wartości y.

challenge icon

Wyzwanie

Łatwy

Obiekt porusza się przez bagno. W odległości do 3 jednostek od jego środka, swamp (ustawionego w Inspectorze), porusza się z połową swojej prędkości speed; dalej porusza się z pełną prędkością. Kod ruchu jest już napisany: oblicz prędkość, której należy użyć w każdej klatce, i pozostaw samo pole speed bez zmian.

Naciśnij Graj i przejdź przez bagno, a następnie naciśnij Sprawdź.

Spróbuj swoich sił

using UnityEngine;

public class Walker : MonoBehaviour
{
    public float speed = 4f;
    public Vector3 swamp = new Vector3(0, 0.5f, 0);

    void Update()
    {
        float s = speed;
        // W odległości do 3 jednostek od bagna poruszaj się z połową prędkości.

        Vector3 direction = new Vector3(Input.GetAxisRaw("Horizontal"), 0, Input.GetAxisRaw("Vertical"));
        transform.position += direction.normalized * s * Time.deltaTime;
    }
}
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Podstawy skryptów w Unity