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.
Wyzwanie
ŚredniRozpocznij wyzwanie Unikaj bloków: steruj biegaczem, poruszając go po torze.
- W
Update()skopiujtransform.positiondoVector3 pi dodajInput.GetAxisRaw("Horizontal") * speed * Time.deltaTimedop.x. Surowa oś od razu porusza obiekt z pełną prędkością. - Ustaw
p.x = Mathf.Clamp(p.x, -laneEdge, laneEdge);, a następnietransform.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
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