Menu
CoddyTech

타워 디펜스 라이트

Coddy Unity 여정의 Unity 게임 아키텍처 섹션에 포함된 레슨. 50개 중 48번째.

크립들은 길을 따라 기지로 행진하고, 기지에는 타워 하나가 지키고 있습니다. 타워는 사거리 안에 크립이 있는 동안 가장 가까운 크립에게 볼트를 발사하고, 쓰러뜨린 크립마다 골드를 줍니다. 스페이스 키를 누르면 골드를 사용해 타워의 다음 레벨을 구매합니다. 레벨이 올라갈 때마다 사거리가 늘어나거나, 더 빠르게 발사하거나, 더 강하게 공격합니다. 기지에 도달한 크립은 그대로 통과합니다. 레벨은 디자이너가 코드에 손대지 않고 에셋에서 조정하는 게임 데이터입니다. 타워는 볼트를 많이 발사하므로, 발사할 때마다 볼트를 만들고 파괴하는 대신 풀에서 재사용합니다.

스크립트 두 개를 작성하세요. 에셋 유형인 TowerData와 Tower입니다. Creep, Bolt, CreepSpawner는 준비되어 있습니다.

challenge icon

챌린지

어려움

Inspector는 Tower에 data(Arrow 에셋), boltPrefab 및 infoText를 제공합니다. Input System의 Keyboard.current를 통해 Space 입력을 읽습니다.

  • TowerData.cs에는 Inspector에서 표시할 수 있는 클래스 TowerLevel이 있으며, public float range, public float fireEvery, public int damage 및 public int cost(해당 레벨에 도달하는 데 필요한 가격)가 포함됩니다. 또한 Create 메뉴 항목이 있는 ScriptableObject인 TowerData와 public List<TowerLevel> levels가 있습니다. Arrow 에셋에는 세 가지 레벨이 들어 있습니다. 사거리 4, 발사 간격 1초, 피해량 1, 비용 0; 사거리 5, 발사 간격 0.6초, 피해량 1, 비용 6; 사거리 6, 발사 간격 0.4초, 피해량 2, 비용 12입니다.
  • 타워는 첫 번째 레벨, 골드 0으로 시작하며, 둘 중 하나가 바뀔 때마다 infoText에 둘 다 Level 1, 0 gold 형식으로 표시됩니다.
  • 마지막 발사 이후 해당 레벨의 fireEvery초가 지났고 크립이 사거리 안에 있으면(크립의 콜라이더가 타워에서 range 이내에 있고, Physics.OverlapSphere가 이를 찾음) 타워는 가장 가까운 크립을 공격합니다. ObjectPool<Bolt>에서 볼트를 가져와 타워 위치에 놓은 다음 bolt.Launch(creep, damage, pool.Release)를 호출합니다. 볼트는 작업이 끝나면 마지막 인수를 호출하여 풀에 반환됩니다. 볼트는 풀에서 대기하는 동안 비활성화되고, 가져올 때 활성화됩니다.
  • 죽는 크립마다 bounty만큼의 골드를 지급합니다. 정적 이벤트 Creep.Killed를 수신 대기하세요.
  • 다음 레벨이 있고 골드가 해당 레벨의 cost를 충당하면 Space 키로 다음 레벨을 구매합니다. 비용만큼 골드가 차감되고 타워의 레벨이 올라가며, Tower level 2와 같이 로그를 남깁니다. 그렇지 않으면 Space 키를 눌러도 아무 작업도 하지 않습니다.

Play를 누르고, 길을 따라가며 업그레이드한 다음 Check를 누르세요.

직접 해보기

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;
}
quiz icon실력 점검

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

Unity 게임 아키텍처의 모든 레슨