적 데이터
Coddy의 Unity 게임: 타워 디펜스 코스 레슨. 25개 중 2번째.
러너가 그런트와 함께 등장합니다. 러너는 더 빠르고 체력이 더 적으며, 모든 러너가 같은 수치를 공유하므로 이 수치는 개별 적이 아니라 종류에 속합니다. 이 수치는 ScriptableObject 에셋인 EnemyData에 저장됩니다. 프로젝트에는 그런트 데이터(속도 2, 체력 9)와 러너 데이터(속도 3.5, 체력 5)가 있으며, Inspector에서 각 적의 data 필드에 해당 에셋을 지정합니다.
각 적은 필요할 때마다 해당 필드를 통해 종류별 수치를 읽습니다.
void Start()
{
Debug.Log(name + " pays " + data.reward);
}체력은 다릅니다. 공격을 받은 그런트의 체력은 뒤에 있는 그런트보다 적습니다. 따라서 에셋에는 maxHealth를 저장하고, 각 적은 오브젝트가 생성되는 즉시 실행되는 Awake에서 이 값을 자기 필드에 복사합니다. 에셋 자체는 절대 변경하지 마세요. 그러면 해당 종류의 모든 적이 바뀝니다.
챌린지
쉬움각 적에게 해당 종류의 자산에 있는 능력치를 부여하세요.
Enemy에서speed를public EnemyData data;로 바꾸고data.speed만큼 이동하게 하세요.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 플레이그라운드