Menu
CoddyTech

Ara Noktalar

Coddy'nin Unity Oyunu: Kule Savunması kursunda ders 1 / 18.

Bu kursta bir kule savunma oyunu geliştiriyorsun. Düşmanlar dalgalar hâlinde bir yol boyunca üssüne doğru ilerliyor; sen de inşa platformlarına kuleler yerleştirip onları geliştirerek ve satarak düşmanları durduruyorsun. Her ders bir özellik ekliyor. Oyunun on iki betiğinin tümü en başından itibaren projede bulunuyor; çoğu, sonraki derslerde tamamlanacak kısa taslaklardan oluşuyor.

Bir düşman, yürüdüğü sıraya göre bir dizi içinde bulunan, köşelerdeki boş GameObject’ler olan yol noktalarını izler. Düşman, ilerleyeceği yol noktasının indeksini tutar, ona doğru hareket eder ve vardığında bir sonrakine geçer. Vector3.MoveTowards(current, target, maxStep), bir noktayı hedefe doğru en fazla maxStep kadar hareket ettirir ve hedefi geçmesine asla izin vermez; böylece düşman tam olarak yol noktasına varır ve == ile vardığı anlaşılabilir. Bu devriye dronu, noktaları arasında uçar ve sonuncudan sonra başa döner:

public Transform[] posts;
public float speed = 3f;
private int current;

void Update()
{
    Vector3 goal = posts[current].position;
    transform.position = Vector3.MoveTowards(transform.position, goal, speed * Time.deltaTime);
    if (transform.position == goal)
    {
        current = (current + 1) % posts.Length;
    }
}

Bir düşman döngü oluşturmaz: son yol noktasından sonra gidecek başka bir yer yoktur. İndeks Length değerine ulaştığında artık bir yol noktasını göstermez ve waypoints[waypoints.Length] okumak bir IndexOutOfRangeException hatası verir; bu yüzden indeks kullanılmadan önce kontrol edilir. Yol noktaları yerden 0.6 yukarıda, yani düşmanın merkezinin yüksekliğindedir; bu nedenle onlara doğru düz bir çizgide yürümek ayaklarının yerde kalmasını sağlar.

challenge icon

Görev

Kolay

Grunt ilk yol noktasında, WP0 dur ve Enemy betiğinde doğma noktasındaki WP0'dan üssün bulunduğu WP7'ye kadar sekiz yol noktası waypoints içinde zaten bulunur.

  1. Özel bir int next ekle: Grunt'ın ilerleyeceği yol noktasının dizini. WP0'da başladığı için next 1'den başlar.
  2. Update içinde, Vector3.MoveTowards ile Grunt'ı saniyede speed birim hızla waypoints[next] yönünde hareket ettir.
  3. O yol noktasına ulaştığında bir sonraki noktaya ilerle.
  4. Son yol noktasından sonra dur: artık hareket etmesin ve hata oluşmasın.

Play'e basıp Grunt'ın yol boyunca ilerleyişini izle, ardından Check'e bas.

Kendin dene

using UnityEngine;

public class Enemy : MonoBehaviour
{
    public float speed = 2f;
    public Transform[] waypoints;

    void Update()
    {
        // Burada yolu izle: sırayla bir waypoint'ten diğerine git.
    }
}
quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Unity Oyunu: Kule Savunması bölümündeki tüm dersler