Menu
CoddyTech

파워업

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

challenge icon

챌린지

중급

파워업. 이전 레슨의 모든 내용을 유지합니다. 아레나에 하트와 방패가 놓여 있고, Heart 및 Shield 프리팹은 웨이브에서 드롭되도록 준비되어 있습니다. 영웅이 주울 수 있는 모든 것은 하나의 인터페이스를 구현하므로, 영웅은 종류를 알 필요가 없습니다.

  • IPickup은 메서드 하나인 void Collect(Hero hero);를 선언합니다.
  • Heart는 이를 구현하며, 인스펙터에서 설정한 amount(2)를 사용합니다. 영웅을 amount만큼 치유하고 자신을 제거합니다.
  • Shield는 이를 구현하며, 인스펙터에서 설정한 duration(5)을 사용합니다. 영웅이 duration초 동안 모든 공격을 받아도 안전하게 보호하고 자신을 제거합니다.
  • Hero에는 체력을 더하되 maxHealth를 넘지 않도록 하고, 피격 시처럼 체력을 로그로 출력하는 public void Heal(int amount)가 추가됩니다. 쓰러진 영웅은 치유되지 않습니다. 또한 지금부터 seconds초 동안 피격으로부터 안전하게 보호하는 public void Protect(float seconds)도 추가됩니다. 이는 피격 시 적용되는 safeTime과 같은 방식으로 동작합니다. 여기에 OnTriggerEnter도 추가됩니다. 닿은 대상에 IPickup이 있으면 해당 대상에서 Collect(this)를 호출합니다. CharacterController는 Rigidbody가 없어도 트리거 메시지를 받습니다.
  • 각 Wave에는 public GameObject reward가 추가됩니다. 인스펙터는 인터페이스 타입의 필드를 표시할 수 없으므로, 이 필드에는 프리팹을 GameObject로 저장합니다. 웨이브를 물리치면 스포너는 다음 휴식 시간 전에 해당 웨이브에 보상이 있는 경우 아레나 중앙의 자기 위치에 보상을 생성합니다. 에셋에서 웨이브 1에는 Heart를, 웨이브 2에는 Shield를 지정합니다.

Play를 눌러 웨이브를 클리어하고 보상을 주운 다음, Check를 누르세요.

직접 해보기

// 이 부분은 나중 수업에서 채웁니다: 영웅이 주울 수 있는 모든 것.
public interface IPickup
{
}

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