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 klawiszy WASD, je, rośnie i ginie po uderzeniu w ścianę lub własny ogon. Snake steruje głową; GameManager pozostaje pusty, dopóki nie pojawi się jedzenie. Przycisk „Graj” uruchamia grę, a przycisk „Sprawdź” ocenia kod.
Pola mają szerokość jednej jednostki i znajdują się na liczbach całkowitych od -7 do 7. Wąż nigdy się nie ślizga: przeskakuje o całe pole podczas tyknięcia, czyli stałego rytmu, i stoi nieruchomo między tyknięciami. Rytm wyznacza timer: dodawaj Time.deltaTime w każdej klatce, a gdy osiągnie wartość rytmu, wykonaj ruch i odejmij od niego tę wartość:
timer += Time.deltaTime;
if (timer >= 0.5f)
{
timer -= 0.5f;
Step();
}Odejmowanie wartości rytmu zamiast ustawiania timera na 0 pozwala zachować część klatki, która go przekroczyła, dzięki czemu rytm nie będzie się opóźniać. Użyj pola tick, a nie liczby.
Wyzwanie
ŁatwySpraw, by głowa przesuwała się o jedną komórkę w każdym takcie.
- W
Snakedodajprivate float timer; - W
Update()dodawajTime.deltaTimedo timer; gdytimer >= tick, odejmij od niego tick i wywołajStep(). - W
Step()dodajdirectiondotransform.position.
Naciśnij „Graj”: głowa przesuwa się w prawo, komórka po komórce, na razie poza planszę. Następnie naciśnij „Sprawdź”.
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 jeden Step()
}
void Step()
{
// Przesuń głowę o jedną komórkę w kierunku direction
}
}
Wszystkie lekcje w sekcji Gra w Unity: Wąż 3D
Poćwicz samodzielnie: Edytor online Unity