Menu
CoddyTech

Biegacz

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

W tym rozdziale zbudujesz małą grę „Dodge the Blocks”. Sterujesz biegaczem poruszającym się po torze, gdy z nieba spadają klocki, a jedno dotknięcie kończy bieg. Cała gra mieści się w jednym skrypcie — Runner — który zyskuje nową funkcję w każdej lekcji: sterowanie, spadające klocki, usuwanie ich, trafienie i wynik.

Pierwszą funkcją jest sterowanie, które utrzymuje postać na torze, z użyciem Mathf.Clamp(value, min, max) z gry Catch the Star: funkcja zwraca min, gdy wartość jest poniżej zakresu, max, gdy jest powyżej, a w przeciwnym razie samą wartość. Ma znaczenie, gdzie umieścisz ograniczenie. Ten wskaźnik ładowania zapełnia się, gdy trzymasz Spację, opróżnia, gdy jej nie trzymasz, i nigdy nie wykracza poza zakres od 0 do 10:

[SerializeField] private float charge = 0f;

void Update()
{
    if (Input.GetKey(KeyCode.Space))
    {
        charge += 4f * Time.deltaTime;
    }
    else
    {
        charge -= 2f * Time.deltaTime;
    }
    charge = Mathf.Clamp(charge, 0f, 10f);
    transform.localScale = new Vector3(0.5f, charge, 0.5f);
}

Ograniczenie następuje po zmianie wartości. Jeśli ograniczysz ją wcześniej, wartość może na końcu klatki przekroczyć limit o jeden krok, a pasek zostanie narysowany na podstawie tej wartości. Mathf.Clamp zwraca również nową liczbę zamiast zmieniać przekazaną zmienną, więc przypisz wynik z powrotem.

challenge icon

Wyzwanie

Średni

Rozpocznij „Unikaj bloków” od runnera. Inspector ustawia w skrypcie Runner wartości speed (6) i laneEdge (4).

  • Strzałki w lewo i w prawo przesuwają runnera wzdłuż osi x z prędkością speed jednostek na sekundę.
  • Jego współrzędna x nigdy nie spada poniżej -laneEdge ani nie przekracza laneEdge, więc pozostaje na torze.

Naciśnij Play, kliknij grę i pobiegnij do obu końców toru, a następnie naciśnij Check.

Spróbuj swoich sił

using UnityEngine;

public class Runner : MonoBehaviour
{
    [SerializeField] private float speed = 6f;
    [SerializeField] private float laneEdge = 4f;

    void Update()
    {
        // poruszaj się wzdłuż x za pomocą strzałek, a potem utrzymuj x w obrębie pasa
    }
}
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