Menu
CoddyTech

적 데이터

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

러너가 그런트와 함께 등장합니다. 러너는 더 빠르고 체력이 더 적으며, 모든 러너가 같은 수치를 공유하므로 이 수치는 개별 적이 아니라 종류에 속합니다. 이 수치는 ScriptableObject 에셋인 EnemyData에 저장됩니다. 프로젝트에는 그런트 데이터(속도 2, 체력 9)와 러너 데이터(속도 3.5, 체력 5)가 있으며, Inspector에서 각 적의 data 필드에 해당 에셋을 지정합니다.

각 적은 필요할 때마다 해당 필드를 통해 종류별 수치를 읽습니다.

void Start()
{
    Debug.Log(name + " pays " + data.reward);
}

체력은 다릅니다. 공격을 받은 그런트의 체력은 뒤에 있는 그런트보다 적습니다. 따라서 에셋에는 maxHealth를 저장하고, 각 적은 오브젝트가 생성되는 즉시 실행되는 Awake에서 이 값을 자기 필드에 복사합니다. 에셋 자체는 절대 변경하지 마세요. 그러면 해당 종류의 모든 적이 바뀝니다.

challenge icon

챌린지

쉬움

각 적에게 해당 종류의 자산에 있는 능력치를 부여하세요.

  1. Enemy에서 speed를 public EnemyData data;로 바꾸고 data.speed만큼 이동하게 하세요.
  2. private int health;를 추가하고 Awake에서 data.maxHealth로 설정하세요.

‘플레이’를 누르세요. Runner가 Grunt를 추월합니다. 그런 다음 ‘확인’을 누르세요.

직접 해보기

using UnityEngine;

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

    private int next = 1;

    void Update()
    {
        if (next >= waypoints.Length)
        {
            return;
        }

        Vector3 target = waypoints[next].position;
        transform.position = Vector3.MoveTowards(transform.position, target, speed * Time.deltaTime);
        if (transform.position == target)
        {
            next++;
        }
    }
}

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

직접 연습해 보세요: Unity 플레이그라운드