Menu
CoddyTech

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

challenge icon

Wyzwanie

Łatwy

Spraw, aby łazik poruszał się płynnie, bez przyspieszania i zwalniania.

  1. W Update() odczytaj float h = Input.GetAxisRaw("Horizontal"); i float v = Input.GetAxisRaw("Vertical");.
  2. Dodaj new Vector3(h * speed * Time.deltaTime, 0, v * speed * Time.deltaTime) do transform.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

Poćwicz samodzielnie: Edytor online Unity