Tahta
Coddy'nin Unity'de 3D Yılan Oyunu kursunda ders 1 / 14.
Bu kursta 3D Snake yapacaksın: yukarıdan görülen, 15'e 15'lik bir tahtada küplerden oluşan bir yılan. Her seferinde bir hücre ilerler, ok tuşlarıyla veya WASD ile döner, yiyecek yer, büyür ve duvarlara ya da kendi kuyruğuna çarptığında ölür. Oyunu iki betik çalıştırır: baştaki Snake ve yiyecek sonraki bölümde gelene kadar boş kalan GameManager.
Hücreler bir birim genişliğindedir ve tam sayıların merkezindedir: x ve z, -7 ile 7 arasında değişir ve her hücre y 0'da yer alır. Yılan hücreler arasında asla kaymaz. Sabit bir ritim olan tik başına, örneğin 0.15 saniyede, bir hücre sıçrar ve arada hareketsiz durur.
Unity'de ritim bir zamanlayıcıdır: her karede Time.deltaTime ekle ve zamanlayıcı aralığa ulaştığında işlem yapıp aralığı çıkar. Bu işaret ışığı saniyede bir yanıp söner:
public Light beacon;
public float interval = 1f;
private float timer;
void Update()
{
timer += Time.deltaTime;
if (timer >= interval)
{
timer -= interval;
beacon.enabled = !beacon.enabled;
}
}Zamanlayıcıyı 0'a sıfırlamak yerine aralığı çıkarmak, aralığın aşıldığı karede geçen süreyi korur; böylece ritim gecikmez.
Görev
KolayKafa, (-3, 0, 0) hücresinde yeşil bir küptür. Snake'in tick değeri 0.15 saniyedir ve direction değeri Vector3.right'tır.
- Bir
private float timer;ekle. Update()içindeTime.deltaTimekadar süreyi sayaca ekle. Sayaçtickdeğerine ulaştığında, sayaçtantickdeğerini çıkar veStep()metodunu çağır.Step()içinde kafayıdirectionyönünde bir hücre hareket ettir.
Oyna'ya bas ve kafanın sağa doğru ilerleyişini izle. Şimdilik tahtanın dışına çıkacak: duvarlar 4. derste gelecek. Ardından Kontrol Et'e bas.
Kendin dene
using UnityEngine;
public class Snake : MonoBehaviour
{
public float tick = 0.15f; // iki adım arasındaki saniye cinsinden süre
private Vector3 direction = Vector3.right;
void Update()
{
// Her tick saniyede bir Step() çağır
}
void Step()
{
// Başı direction yönünde bir hücre ilerlet
}
}
Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.