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.
Wyzwanie
ŁatwyObiekt 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;
}
}
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
1Twój pierwszy skrypt
Witaj, UnityUmieść sześcianPoruszaj się w każdej klatceObracaj się co sekundęSteruj za pomocą klawiszyPodsumowanie: Prowadź sześcian4Wektory
Dodawanie wektorówKierunkiPrzestrzeń lokalna i globalnaPrędkość po przekątnejOdległość między obiektamiVector3 jest strukturąPodsumowanie: pilot drona2Inspektor
Pola inspektoraSerializeFieldLiczby zmiennoprzecinkowe i MathfAtrybuty inspektoraPodsumowanie: Winda5Transformacje i hierarchia
Rodzice i dzieciSkalaPatrz na obiektyPoruszanie się w kierunku punktuPodsumowanie: Księżyc krążący po orbicie3Wejście
Naciśnięty, przytrzymany, zwolnionyOsiePrzyciski o nazwachPrzyciski myszyPowtórka: naładowany skok6Obiekty gry i komponenty
Referencje w InspectorzePobieranie komponentuBrakujące komponentyDodawanie komponentuRequireComponentPokazywanie i ukrywaniePodsumowanie: włącznik światła