Menu
CoddyTech

Biegacz

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

W tym rozdziale stworzysz niewielką grę Dodge the Blocks. Sterujesz biegaczem poruszającym się po torze, na który spadają z nieba bloki; 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 bloki, usuwanie ich, trafienie i wynik.

Pierwszą funkcją jest sterowanie, które utrzymuje biegacza na torze. Wykorzystasz do tego Mathf.Clamp(value, min, max) z gry Catch the Star: funkcja zwraca min, gdy wartość jest mniejsza od zakresu, max, gdy jest większa, a w pozostałych przypadkach samą wartość. Ważne jest, gdzie umieścisz ograniczenie. Ten miernik ładunku zapełnia się, gdy trzymasz klawisz spacji, a opróżnia, gdy go nie trzymasz, i zawsze mieści się w zakresie 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 stosujesz po zmianie wartości. Gdyby ograniczenie nastąpiło wcześniej, wartość mogłaby przekroczyć limit o jeden krok w danej klatce, a pasek zostałby narysowany na podstawie tej wartości. Mathf.Clamp zwraca też nową liczbę zamiast zmieniać przekazaną zmienną, więc przypisz wynik z powrotem.

challenge icon

Wyzwanie

Średni

Rozpocznij wyzwanie Unikaj bloków: steruj biegaczem, poruszając go po torze.

  1. W Update() skopiuj transform.position do Vector3 p i dodaj Input.GetAxisRaw("Horizontal") * speed * Time.deltaTime do p.x. Surowa oś od razu porusza obiekt z pełną prędkością.
  2. Ustaw p.x = Mathf.Clamp(p.x, -laneEdge, laneEdge);, a następnie transform.position = p;.

Naciśnij „Graj”, kliknij grę i pobiegnij do obu końców: biegacz zatrzyma się na krawędziach. Następnie naciśnij „Sprawdź”.

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ż osi x za pomocą klawiszy strzałek, a następnie utrzymuj x w obrębie pasa
    }
}

Wszystkie lekcje w sekcji Podstawy skryptów w Unity

Poćwicz samodzielnie: Edytor online Unity