웨이포인트
Coddy의 Unity 게임: 타워 디펜스 코스 레슨. 25개 중 1번째.
이 과정에서는 타워 디펜스 게임을 만듭니다. 적들은 웨이브마다 경로를 따라 기지로 걸어오고, 경로 옆에 세운 타워가 적들을 막습니다. 각 수업에서 기능 하나를 추가합니다. ‘플레이’를 눌러 실행해 보고 ‘확인’을 눌러 평가받으세요. 스크립트 12개는 모두 처음부터 프로젝트에 들어 있습니다. 대부분은 이후 수업에서 내용을 채워 넣을 짧은 스텁이며, 2과에서 사용할 EnemyData도 제공됩니다.
경로는 웨이포인트 8개로 이루어져 있습니다. 생성 지점의 WP0부터 기지의 WP7까지가 Grunt의 waypoints 배열에 들어 있습니다. Grunt는 향하는 웨이포인트의 인덱스를 저장하고 그곳으로 이동합니다. Vector3.MoveTowards는 목표 지점을 지나치지 않으므로 Grunt는 웨이포인트에 정확히 도달하며, ==를 사용해 도착 여부를 확인할 수 있습니다.
Vector3 target = waypoints[3].position;
transform.position = Vector3.MoveTowards(transform.position, target, 5f * Time.deltaTime);
if (transform.position == target)
{
// 도착함: 다음 지점으로 이동
}마지막 웨이포인트 다음에는 인덱스가 waypoints.Length와 같아집니다. 이 위치에서 배열을 읽으면 오류가 발생하므로, 인덱스를 사용하기 전에 확인하세요.
챌린지
쉬움그런트가 웨이포인트에서 다음 웨이포인트까지 경로를 따라 걷게 하세요.
Enemy에private int next = 1;을 추가하세요(그런트는 WP0에서 시작합니다).Update에서next >= waypoints.Length일 때 반환하세요.Vector3.MoveTowards를 사용해speed * Time.deltaTime속도로waypoints[next].position를 향해 이동시키세요. 도착하면next++를 실행하세요.
‘플레이’를 누르세요. 그런트가 모든 모퉁이를 지나 기지에서 멈춥니다. 그런 다음 ‘확인’을 누르세요.
직접 해보기
using UnityEngine;
public class Enemy : MonoBehaviour
{
public float speed = 2f;
public Transform[] waypoints;
void Update()
{
// 여기서 경로를 따라 이동하세요: waypoint에서 다음 waypoint로 순서대로 이동하세요.
}
}
Unity 게임: 타워 디펜스의 모든 레슨
직접 연습해 보세요: Unity 플레이그라운드