타워 디펜스 라이트
Coddy Unity 여정의 Unity 게임 아키텍처 섹션에 포함된 레슨. 64개 중 61번째.
스크립트 두 개를 작성하세요. 에셋 유형인 TowerData와 Tower입니다. Creep, Bolt, CreepSpawner는 준비되어 있으며, 타워의 Nearest와 Show도 준비되어 있습니다.
챌린지
어려움타워를 완성하세요. Nearest(range)와 Show()는 준비되어 있습니다.
TowerLevel: 직렬화 가능하며,range,fireEvery,damage,cost는 public입니다.TowerData에는public List<TowerLevel> levels가 있습니다.fireEvery초마다Nearest(range)가 크립을 찾으면, 타워 위치에ObjectPool<Bolt>에서 가져온 볼트를 배치하세요:bolt.Launch(creep, damage, pool.Release).Creep.Killed이벤트 후 현상금을 지급할 때와 스페이스 키를 눌러cost만큼 지불하고 다음 레벨을 구매한 후에Show()를 호출하고,Tower level 2를 로그에 기록하세요.
‘플레이’를 누르고 업그레이드하세요. 그런 다음 ‘확인’을 누르세요.
직접 해보기
using UnityEngine;
using UnityEngine.InputSystem;
using UnityEngine.Pool;
using TMPro;
public class Tower : MonoBehaviour
{
[SerializeField] private TowerData data;
[SerializeField] private Bolt boltPrefab;
[SerializeField] private TMP_Text infoText;
private int level;
private int gold;
// 준비됨: 사거리 내에서 탑과 가장 가까운 creep을 반환하며, 없으면 null을 반환합니다.
Creep Nearest(float range)
{
Creep nearest = null;
float best = Mathf.Infinity;
foreach (Collider hit in Physics.OverlapSphere(transform.position, range))
{
if (hit.TryGetComponent(out Creep creep))
{
float distance = Vector3.Distance(transform.position, creep.transform.position);
if (distance < best)
{
best = distance;
nearest = creep;
}
}
}
return nearest;
}
// 준비됨: 레벨과 골드를 Level 1, 0 gold 형식으로 표시합니다.
void Show()
{
infoText.text = "Level " + (level + 1) + ", " + gold + " gold";
}
}
Unity 게임 아키텍처의 모든 레슨
직접 연습해 보세요: Unity 플레이그라운드