Menu
CoddyTech

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.

challenge icon

Wyzwanie

Średni

Dron 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
    }
}
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