쏘기
Coddy의 Unity 게임: 타워 디펜스 코스 레슨. 25개 중 9번째.
타워는 목표물을 향해 Projectile을 발사합니다. 발사체는 MoveTowards를 사용해 목표물이 걸어가는 동안 따라가며 날아가고, 도착하면 피해를 줍니다. 발사체는 맞은 대상이 Enemy인지 알 필요가 없습니다. 피해를 받을 수 있는 모든 대상이 구현할 수 있는 인터페이스인 IDamageable을 요청하므로, 이를 구현한 대상이라면 무엇이든 공격할 수 있습니다.
발사체가 공중에 있는 동안 목표물이 죽을 수도 있습니다. 파괴된 Unity 객체는 null과 같다고 판정되므로, 발사체는 먼저 target == null인지 확인하고 자신을 파괴합니다.
현재 타워는 1초마다 한 번 발사합니다. 다음 발사 시각을 저장합니다.
if (Time.time >= nextShot)
{
Fire();
nextShot = Time.time + 1f;
}챌린지
중급타워는 1초에 한 번 화살을 발사합니다.
Enemy는IDamageable을 구현합니다.TakeDamage(int amount)는health에서 값을 빼고, 체력이 0 이하가 되면 적을 파괴합니다.Projectile:Launch(Transform target, int damage)는 두 값을 모두 저장합니다.Update는speed로 목표를 향해 날아가고, 도착하면TakeDamage(damage)를 호출한 뒤 자신을 파괴합니다. 목표가 사라진 경우에도 자신을 파괴합니다.Tower:public int damage = 2;와[SerializeField] private Projectile projectilePrefab;을 추가하고, 위와 같이transform.position + Vector3.up에서 발사합니다.
‘플레이’를 누르세요. 화살이 날아가고 그런트가 쓰러집니다. 그런 다음 ‘확인’을 누르세요.
직접 해보기
using UnityEngine;
// 나중에 구현할 내용: 타워에서 목표물을 향해 날아가는 발사체.
public class Projectile : MonoBehaviour
{
}
Unity 게임: 타워 디펜스의 모든 레슨
직접 연습해 보세요: Unity 플레이그라운드