Poruszanie się w kierunku punktu
Część sekcji Podstawy skryptów w Unity ścieżki Unity w Coddy. Lekcja 27 z 67.
Vector3.MoveTowards(current, target, maxStep) zwraca punkt położony maksymalnie o maxStep bliżej target. Jeśli cel znajduje się bliżej, zwraca sam cel, więc nigdy go nie przekracza. Używając speed * Time.deltaTime jako kroku, obiekt porusza się ze stałą prędkością i zatrzymuje dokładnie na celu. Ten wagonik kolejki linowej sunie 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 na miejsce każde kolejne wywołanie ponownie zwraca station, więc wagonik pozostaje na miejscu, a transform.position == station ma wartość true. Dla pojedynczej liczby Mathf.MoveTowards działa tak samo.
Vector3.Lerp(a, b, t) to punkt położony w odległości odpowiadającej ułamkowi t drogi od a do b: gdy t = 0.5, znajduje się w połowie drogi. Zapisane jako Lerp(transform.position, station, 2f * Time.deltaTime) w Update(), pokonuje na każdej klatce część pozostałej odległości: początkowo szybko, a pod koniec coraz wolniej, 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 z Lerp, aby zapewnić łagodne zwalnianie.
Wyzwanie
ŚredniDron czeka w powietrzu, aż naciśniesz spację. Od tego momentu leci w linii prostej do pad, czyli pozycji lądowiska, z prędkością speed jednostek na sekundę, i ląduje dokładnie na nim. Po wylądowaniu zapisuje Landed raz, a nie ponownie w każdej kolejnej klatce.
Naciśnij Play, naciśnij spację, a następnie Check.
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 po dotarciu zapisz Landed w logu tylko raz
}
}
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ścian2Inspektor
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