Menu
CoddyTech

경유 지점

Coddy의 Unity 게임: 타워 디펜스 코스 레슨. 18개 중 1번째.

이 과정에서는 타워 디펜스 게임을 만듭니다. 적들은 웨이브를 이루어 경로를 따라 기지로 진격하고, 여러분은 건설 패드에 타워를 배치한 다음 업그레이드하거나 판매해 적을 막습니다. 각 수업에서는 기능을 하나씩 추가합니다. 게임의 스크립트 12개는 모두 처음부터 프로젝트에 들어 있으며, 대부분은 이후 수업에서 내용을 채워 넣을 짧은 스텁입니다.

적은 웨이포인트를 따라 경로를 이동합니다. 웨이포인트는 모퉁이에 있는 빈 GameObject이며, 적이 지나가는 순서대로 배열에 들어 있습니다. 적은 향하는 웨이포인트의 인덱스를 유지하고, 그 지점으로 이동한 뒤 도착하면 다음 지점으로 넘어갑니다. Vector3.MoveTowards(current, target, maxStep)는 점을 목표 지점 방향으로 최대 maxStep만큼 이동시키며 목표 지점을 지나치지 않으므로, 적은 웨이포인트에 정확히 도착하고 ==로 도착 여부를 확인할 수 있습니다. 이 순찰 드론은 초소 사이를 날아다니며 마지막 초소 이후에는 처음부터 다시 시작합니다.

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

적은 경로를 반복하지 않습니다. 마지막 웨이포인트 이후에는 더 갈 곳이 없습니다. 인덱스가 Length에 도달하면 더 이상 웨이포인트를 가리키지 않으며, waypoints[waypoints.Length]를 읽으면 IndexOutOfRangeException이 발생하므로 인덱스를 사용하기 전에 확인합니다. 웨이포인트는 지면에서 0.6 높이, 즉 적 중심의 높이에 놓여 있으므로, 웨이포인트를 향해 똑바로 걸어가도 발이 지면에 닿아 있습니다.

challenge icon

챌린지

쉬움

Grunt는 첫 번째 웨이포인트인 WP0에 서 있으며, Enemy 스크립트에는 스폰 지점의 WP0부터 기지의 WP7까지 8개의 웨이포인트가 이미 waypoints에 있습니다.

  1. private int next를 추가하세요. Grunt가 향하는 웨이포인트의 인덱스입니다. Grunt는 WP0에서 시작하므로 next는 1에서 시작합니다.
  2. Update에서 Vector3.MoveTowards를 사용해 초당 speed 단위의 속도로 Grunt를 waypoints[next] 쪽으로 이동시키세요.
  3. 해당 웨이포인트에 도착하면 다음 웨이포인트로 향하게 하세요.
  4. 마지막 웨이포인트를 지나면 멈추세요. 더 이상 이동하지 않고 오류도 없어야 합니다.

Play를 눌러 Grunt가 경로를 따라 걷는 모습을 확인한 다음 Check를 누르세요.

직접 해보기

using UnityEngine;

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

    void Update()
    {
        // 여기서 경로를 따라 이동하세요: waypoint에서 다음 waypoint로 순서대로 이동합니다.
    }
}
quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

Unity 게임: 타워 디펜스의 모든 레슨