Prędkość po przekątnej
Część sekcji Podstawy skryptów w Unity ścieżki Unity w Coddy. Lekcja 20 z 67.
Przytrzymaj jednocześnie strzałki w prawo i w górę, a surowe osie wskażą kierunek (1, 0, 1). Jego długość, .magnitude, to pierwiastek kwadratowy z 1 + 1, czyli około 1.41. Postać poruszająca się w tym kierunku pokonuje po przekątnej 1.41 jednostki w czasie, w którym pokonuje 1 jednostkę na wprost: jest o 41% szybsza.
.normalized zwraca kopię wektora wskazującą ten sam kierunek i mającą dokładnie 1 jednostkę długości: (1, 0, 1) zmienia się w około (0.71, 0, 0.71), a (0, 0, 5) zmienia się w (0, 0, 1). Po pomnożeniu przez prędkość wektor ten zapewnia ruch z tą prędkością niezależnie od kierunku. Ta pszczoła leci w stronę kwiatu z prędkością 2 jednostek na sekundę, niezależnie od tego, czy kwiat jest blisko, czy daleko; bez .normalized leciałaby szybciej, im dalej znajdowałby się kwiat:
public Vector3 flower = new Vector3(4, 1, 3);
public float speed = 2f;
void Update()
{
Vector3 toFlower = flower - transform.position;
transform.position += toFlower.normalized * speed * Time.deltaTime;
}Vector3.zero.normalized pozostaje równe (0, 0, 0), ponieważ zero nie ma kierunku. v.normalized pozostawia v bez zmian; v.Normalize() zmienia samo v.
Wyzwanie
ŁatwyNapisz ruch wędrowca. Strzałki (lub WASD), odczytywane za pomocą surowych osi, przesuwają go w lewo i w prawo wzdłuż osi x oraz w górę i w dół wzdłuż osi z. Porusza się z prędkością speed jednostek na sekundę w każdym kierunku, także po przekątnej, natychmiast rusza i się zatrzymuje, a gdy nie jest wciśnięty żaden klawisz, pozostaje w miejscu.
Naciśnij Play, idź prosto i po przekątnej, a następnie naciśnij Check.
Spróbuj swoich sił
using UnityEngine;
public class Walker : MonoBehaviour
{
public float speed = 4f;
void Update()
{
// Strzałki lub WASD: poruszaj się wzdłuż osi x i z z prędkością speed, taką samą po skosie.
}
}
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