Odległość między obiektami
Część sekcji Podstawy skryptów w Unity ścieżki Unity w Coddy. Lekcja 28 z 85.
Vector3.Distance(a, b) określa odległość między dwoma punktami w jednostkach, mierzoną po linii prostej we wszystkich trzech osiach. To długość kroku między nimi, (a - b).magnitude, więc kolejność a i b nie ma znaczenia. Od punktu (0, 0, 0) do (3, 0, 4) wynosi 5.
Porównaj odległość z liczbą, a skrypt będzie wiedział, kiedy coś jest blisko. Ten obozowicz może ogrzać sobie ręce tylko w odległości do 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 też wysokość: obozowicz znajdujący się 5 jednostek nad ogniem jest od niego oddalony o 5 jednostek, a nie o 0. Jeśli wysokość nie powinna mieć znaczenia, porównaj dwa punkty o tej samej współrzędnej y.
Wyzwanie
ŁatwyZwolnij wędrowca do połowy prędkości na bagnie.
- Pod
float s = speed;napiszif (Vector3.Distance(transform.position, swamp) < 3f). - Wewnątrz niego ustaw
s = speed / 2;. Pozostaw polespeedi linie ruchu bez zmian.
Naciśnij „Graj” i przejdź prosto przez bagno: wędrowiec zwalnia na jego obszarze. 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;
}
}
Wszystkie lekcje w sekcji Podstawy skryptów w Unity
1Podstawy C# w Unity
Witaj, UnityZmienneLiczby dziesiętne wymagają fTekst w konsoliZmienne, które pamiętająIf i elsePorównywanie liczbPowtórka: Zbieracz monet4Wejście
Naciśnięty, przytrzymany, zwolnionyOsiePrzyciski z nazwamiPrzyciski myszyPowtórka: naładowany skok7Pętle i metody
Powtarzaj za pomocą forPętle wewnątrz pętliNapisz metodęMetody, które zwracają wynikTablicePowtórka: schody10Wyszukiwanie obiektów
Wyszukiwanie po nazwieTagiWyszukiwanie po typieReferencje lepsze niż wyszukiwanieNull w UnityPowtórka: najbliższa moneta13Projekt: Unikaj bloków
BiegaczBloki z nieba2Wpraw to w ruch
Umieść sześcianPoruszaj w każdej klatceObracaj co sekundęSteruj za pomocą klawiszyPodsumowanie: Prowadź sześcian5Wektory
Dodawanie wektorówKierunkiPrzestrzeń lokalna i globalnaPrędkość po przekątnejOdległość między obiektamiVector3 to strukturaPodsumowanie: pilot drona8Obiekty gry i komponenty
Referencje w InspectorzePobieranie komponentuBrakujące komponentyDodawanie komponentuRequireComponentPokazywanie i ukrywaniePowtórka: włącznik światłaPoćwicz samodzielnie: Edytor online Unity