Menu
CoddyTech

쏘기

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

타워는 목표물을 향해 Projectile을 발사합니다. 발사체는 MoveTowards를 사용해 목표물이 걸어가는 동안 따라가며 날아가고, 도착하면 피해를 줍니다. 발사체는 맞은 대상이 Enemy인지 알 필요가 없습니다. 피해를 받을 수 있는 모든 대상이 구현할 수 있는 인터페이스인 IDamageable을 요청하므로, 이를 구현한 대상이라면 무엇이든 공격할 수 있습니다.

발사체가 공중에 있는 동안 목표물이 죽을 수도 있습니다. 파괴된 Unity 객체는 null과 같다고 판정되므로, 발사체는 먼저 target == null인지 확인하고 자신을 파괴합니다.

현재 타워는 1초마다 한 번 발사합니다. 다음 발사 시각을 저장합니다.

if (Time.time >= nextShot)
{
    Fire();
    nextShot = Time.time + 1f;
}
challenge icon

챌린지

중급

타워는 1초에 한 번 화살을 발사합니다.

  1. Enemy는 IDamageable을 구현합니다. TakeDamage(int amount)는 health에서 값을 빼고, 체력이 0 이하가 되면 적을 파괴합니다.
  2. Projectile: Launch(Transform target, int damage)는 두 값을 모두 저장합니다. Update는 speed로 목표를 향해 날아가고, 도착하면 TakeDamage(damage)를 호출한 뒤 자신을 파괴합니다. 목표가 사라진 경우에도 자신을 파괴합니다.
  3. Tower: public int damage = 2;와 [SerializeField] private Projectile projectilePrefab;을 추가하고, 위와 같이 transform.position + Vector3.up에서 발사합니다.

‘플레이’를 누르세요. 화살이 날아가고 그런트가 쓰러집니다. 그런 다음 ‘확인’을 누르세요.

직접 해보기

using UnityEngine;

// 나중에 구현할 내용: 타워에서 목표물을 향해 날아가는 발사체.
public class Projectile : MonoBehaviour
{
}

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

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