Menu
CoddyTech

Osie

Część sekcji Podstawy skryptów w Unity ścieżki Unity w Coddy. Lekcja 13 z 67.

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 dla ruchu w lewo, 1 dla ruchu w prawo, 0 dla żadnego z tych kierunków. Input.GetAxis("Vertical") robi to samo dla strzałek 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 potrzeba jednej trzeciej sekundy, aby osiągnąć 1, a po puszczeniu kolejnej jednej trzeciej sekundy, aby wrócić do 0. Dzięki temu stopniowemu przejściu poduszkowiec łagodnie przyspiesza i wyhamowuje:

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 stopniowe przejście: w każdej klatce zwraca dokładnie -1, 0 lub 1, więc ruch zaczyna się i zatrzymuje od razu. Używaj GetAxis w przypadku elementów, które powinny sprawiać wrażenie ciężkich, a GetAxisRaw do precyzyjnego sterowania. Gdy oba kierunki są wciśnięte, każda z tych metod zwraca 0, ponieważ kierunki się znoszą. (W projekcie Unity 6 ustawienie Active Input Handling z sekcji Sterowanie klawiszami dotyczy również osi.)

challenge icon

Wyzwanie

Łatwy

Pojazd powinien reagować natychmiast, bez płynnego przyspieszania: strzałki (lub WASD) poruszają nim z prędkością speed jednostek na sekundę, w lewo i w prawo wzdłuż osi x, w górę i w dół wzdłuż osi z. Porusza się z pełną prędkością od momentu naciśnięcia klawisza i zatrzymuje się natychmiast po jego zwolnieniu.

Naciśnij Play, kliknij grę i steruj pojazdem, a następnie naciśnij Check.

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