Osie
Część sekcji Podstawy skryptów w Unity ścieżki Unity w Coddy. Lekcja 20 z 85.
Input.GetAxis("Horizontal") zamienia strzałki w lewo i w prawo (oraz A i D) na jedną liczbę z zakresu od -1 do 1: -1 oznacza lewo, 1 prawo, a 0 żaden kierunek. Input.GetAxis("Vertical") robi to samo ze strzałkami w dół i w górę (S i W). Jedno wywołanie zastępuje dwa if, a drążek gamepada steruje tymi samymi osiami bez dodatkowego kodu.
Liczba nie zmienia się skokowo. Przy domyślnych ustawieniach Unity zmienia się w kierunku wartości docelowej z szybkością 3 na sekundę, więc po naciśnięciu osiągnięcie 1 zajmuje jedną trzecią sekundy, a po zwolnieniu powrót do 0 trwa kolejną jedną trzecią sekundy. Dzięki temu łagodnemu przyspieszaniu poduszkowiec delikatnie nabiera prędkości i stopniowo się zatrzymuje:
public float speed = 5f;
void Update()
{
float h = Input.GetAxis("Horizontal");
transform.position += new Vector3(h * speed * Time.deltaTime, 0, 0);
}Input.GetAxisRaw("Horizontal") pomija łagodne narastanie: w każdej klatce zwraca dokładnie -1, 0 lub 1, więc ruch zaczyna się i zatrzymuje natychmiast. Używaj GetAxis w przypadku elementów, które powinny sprawiać wrażenie ciężkich, a GetAxisRaw do precyzyjnego sterowania. Gdy naciśnięte są obie strzałki, każda z tych metod zwraca 0, ponieważ oba kierunki się znoszą. (W projekcie Unity 6 ustawienie Active Input Handling z lekcji „Sterowanie klawiszami” dotyczy również osi.)
Wyzwanie
ŁatwySpraw, aby łazik poruszał się płynnie, bez przyspieszania i zwalniania.
- W
Update()odczytajfloat h = Input.GetAxisRaw("Horizontal");ifloat v = Input.GetAxisRaw("Vertical");. - Dodaj
new Vector3(h * speed * Time.deltaTime, 0, v * speed * Time.deltaTime)dotransform.position.
Naciśnij „Graj”, kliknij grę i steruj za pomocą strzałek lub klawiszy WASD: łazik natychmiast rusza i się zatrzymuje. Następnie kliknij „Sprawdź”.
Spróbuj swoich sił
using UnityEngine;
public class Rover : MonoBehaviour
{
public float speed = 4f;
void Update()
{
// Horizontal steruje ruchem wzdłuż osi x, a Vertical wzdłuż osi z, bez wygładzania ruchu.
}
}
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