Prędkość po przekątnej
Część sekcji Podstawy skryptów w Unity ścieżki Unity w Coddy. Lekcja 27 z 85.
Przytrzymaj jednocześnie strzałki w prawo i w górę, a surowe osie określą kierunek (1, 0, 1). Jego długość, .magnitude, to pierwiastek kwadratowy z 1 + 1, czyli około 1.41. Poruszający się obiekt pokonuje dzięki temu 1.41 jednostki po przekątnej w czasie, w którym pokonuje 1 jednostkę prosto przed siebie: porusza się o 41% szybciej.
.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 powoduje 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ę, bez względu na to, czy kwiat jest daleko, czy blisko; 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
ŁatwySpraw, aby postać poruszała się po przekątnej z taką samą prędkością jak w linii prostej.
- W
Update()utwórzVector3 direction = new Vector3(Input.GetAxisRaw("Horizontal"), 0, Input.GetAxisRaw("Vertical"));. - Dodaj
direction.normalized * speed * Time.deltaTimedotransform.position.
Naciśnij „Graj” i przytrzymaj dwa klawisze strzałek: postać porusza się po przekątnej nie szybciej niż w linii prostej. Następnie naciśnij „Sprawdź”.
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ą również po przekątnej.
}
}
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