Plansza
Lekcja 1 z 14 w kursie Gra w Unity: Wąż 3D w Coddy.
W tym kursie zbudujesz Snake’a w 3D: węża z sześcianów na planszy 15 na 15, widzianej z góry. Porusza się o jedno pole naraz, skręca za pomocą strzałek lub WASD, zjada jedzenie, rośnie i ginie po zetknięciu ze ścianą lub własnym ogonem. Działają tu dwa skrypty: Snake na głowie oraz GameManager, który pozostaje pusty, dopóki jedzenie nie pojawi się w następnym rozdziale.
Pola mają szerokość jednej jednostki i są wyśrodkowane na liczbach całkowitych: współrzędne x i z mieszczą się w zakresie od -7 do 7, a każde pole znajduje się na wysokości y 0. Wąż nigdy nie ślizga się między polami. Przeskakuje o całe pole w każdym taktu, czyli w stałym rytmie, na przykład co 0.15 sekundy, a pomiędzy nimi stoi nieruchomo.
Rytm w Unity to timer: dodawaj Time.deltaTime w każdej klatce, a gdy timer osiągnie wyznaczony interwał, wykonaj działanie i odejmij od niego ten interwał. Ta lampka miga raz na sekundę:
public Light beacon;
public float interval = 1f;
private float timer;
void Update()
{
timer += Time.deltaTime;
if (timer >= interval)
{
timer -= interval;
beacon.enabled = !beacon.enabled;
}
}Odejmowanie interwału zamiast ustawiania timera z powrotem na 0 pozwala zachować część klatki, która wykroczyła poza interwał, dzięki czemu rytm nie zaczyna się opóźniać.
Wyzwanie
ŁatwyGłowa to zielony sześcian na komórce (-3, 0, 0). Snake ma tick równy 0.15 sekundy oraz direction o wartości Vector3.right.
- Dodaj
private float timer;. - W
Update()zwiększaj wartość timera oTime.deltaTime. Gdy osiągnie wartośćtick, odejmij od niegoticki wywołajStep(). - W
Step()przesuń głowę o jedną komórkę wzdłużdirection.
Naciśnij Play i obserwuj, jak głowa przesuwa się w prawo. Na razie opuszcza planszę: ściany pojawią się w lekcji 4. Następnie naciśnij Check.
Spróbuj swoich sił
using UnityEngine;
public class Snake : MonoBehaviour
{
public float tick = 0.15f; // sekundy między dwoma krokami
private Vector3 direction = Vector3.right;
void Update()
{
// Co tick sekund wykonaj jedno Step()
}
void Step()
{
// Przesuń głowę o jedną komórkę wzdłuż direction
}
}
Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.