Menu
CoddyTech

Titik Jalur

Pelajaran 1 dari 18 dalam kursus Game Unity: Tower Defense di Coddy.

Di kursus ini, kamu membuat game tower defense. Musuh bergerak menyusuri jalur dalam gelombang menuju markasmu, dan kamu menghentikan mereka dengan tower yang kamu tempatkan di build pad, lalu kamu tingkatkan dan jual. Setiap pelajaran menambahkan satu fitur. Semua dua belas skrip game sudah ada di proyek sejak awal; sebagian besar berupa stub singkat yang akan dilengkapi dalam pelajaran berikutnya.

Musuh mengikuti jalur melalui waypoint: GameObject kosong di sudut-sudut, yang disimpan dalam array sesuai urutan yang dilalui. Musuh menyimpan indeks waypoint yang ditujunya, bergerak ke arahnya, lalu beralih ke waypoint berikutnya saat tiba. Vector3.MoveTowards(current, target, maxStep) menggerakkan titik ke arah target paling jauh sejauh maxStep dan tidak pernah melewatinya, sehingga musuh mendarat tepat di waypoint dan == dapat mengetahui bahwa musuh telah tiba. Drone patroli ini terbang di antara pos-posnya dan kembali ke awal setelah pos terakhir:

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;
    }
}

Musuh tidak melakukan perulangan: setelah waypoint terakhir, tidak ada lagi tempat untuk dituju. Setelah indeks mencapai Length, indeks itu tidak lagi menunjuk ke waypoint, dan membaca waypoints[waypoints.Length] akan memunculkan IndexOutOfRangeException, jadi indeks diperiksa sebelum digunakan. Waypoint berada 0.6 di atas tanah, setinggi bagian tengah musuh, sehingga berjalan lurus ke arahnya membuat kaki musuh tetap menyentuh tanah.

challenge icon

Tantangan

Mudah

Grunt berdiri di waypoint pertama, WP0, dan skrip Enemy-nya sudah memiliki delapan waypoint di waypoints, dari WP0 di titik spawn hingga WP7 di markas.

  1. Tambahkan private int next: indeks waypoint yang dituju Grunt. Grunt mulai di WP0, jadi next dimulai dari 1.
  2. Di Update, gerakkan Grunt menuju waypoints[next] dengan kecepatan speed unit per detik menggunakan Vector3.MoveTowards.
  3. Saat Grunt tiba di waypoint itu, arahkan ke waypoint berikutnya.
  4. Setelah waypoint terakhir, berhenti: jangan bergerak lagi dan jangan muncul error.

Tekan Play dan amati Grunt berjalan di sepanjang jalur, lalu tekan Periksa.

Coba sendiri

using UnityEngine;

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

    void Update()
    {
        // Ikuti jalurnya di sini: dari satu waypoint ke waypoint berikutnya, secara berurutan.
    }
}
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Game Unity: Tower Defense