Porusz się w kierunku punktu
Część sekcji Podstawy skryptów w Unity ścieżki Unity w Coddy. Lekcja 35 z 85.
Vector3.MoveTowards(current, target, maxStep) zwraca punkt oddalony od target o nie więcej niż maxStep. Jeśli cel znajduje się bliżej, zwraca sam cel, więc nigdy go nie przekracza. Gdy krokiem jest speed * Time.deltaTime, obiekt porusza się ze stałą prędkością i zatrzymuje dokładnie na celu. Ten wagonik kolejki linowej płynnie dociera do stacji z prędkością 2 jednostek na sekundę:
public Vector3 station = new Vector3(6, 3, 0);
public float speed = 2f;
void Update()
{
transform.position = Vector3.MoveTowards(transform.position, station, speed * Time.deltaTime);
}Po dotarciu każda kolejna funkcja wywołania ponownie zwraca station, więc wagonik pozostaje w miejscu, a transform.position == station ma wartość true. W przypadku pojedynczej liczby Mathf.MoveTowards działa tak samo.
Vector3.Lerp(a, b, t) zwraca punkt oddalony o ułamek t drogi od a do b: dla t = 0.5 znajduje się w połowie drogi. Zapisane jako Lerp(transform.position, station, 2f * Time.deltaTime) w Update(), na każdej klatce pokonuje część pozostałej odległości: na początku szybko, a pod koniec coraz wolniej, stopniowo zbliżając się do celu zamiast docierać do niego ze stałą prędkością. Użyj MoveTowards, gdy obiekt ma poruszać się ze stałą prędkością i zatrzymać dokładnie na celu; użyj tego wzorca Lerp, aby uzyskać łagodne zwalnianie.
Wyzwanie
ŚredniSkieruj drona na lądowisko po naciśnięciu spacji.
- Dodaj pola
bool flying;ibool landed;. PoInput.GetKeyDown(KeyCode.Space)ustawflying = true;. - Gdy
flying && !landed, poruszaj się za pomocąVector3.MoveTowards(transform.position, pad, speed * Time.deltaTime). - Gdy
transform.position == pad, ustawlandedi zapisz w loguLanded.
Naciśnij „Graj”, a następnie spację: dron wyląduje na lądowisku. Potem naciśnij „Sprawdź”.
Spróbuj swoich sił
using UnityEngine;
public class Drone : MonoBehaviour
{
public Vector3 pad = new Vector3(0, 0.25f, 0);
public float speed = 2f;
void Update()
{
// Po naciśnięciu Space: leć do pad z prędkością speed i zapisz Landed w logu tylko raz po dotarciu
}
}
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ła3Inspektor
Pola inspektoraSerializeFieldLiczby zmiennoprzecinkowe i MathfAtrybuty inspektoraPowtórka: winda6Przekształcenia i hierarchia
Rodzice i dzieciWciągnij flagęSkalowaniePatrz na obiektyPorusz się w kierunku punktuPodsumowanie: Księżyc na orbiciePoćwicz samodzielnie: Edytor online Unity