파워업
Coddy Unity 여정의 Unity 게임 아키텍처 섹션에 포함된 레슨. 50개 중 45번째.
챌린지
중급파워업. 이전 레슨의 모든 내용을 유지합니다. 아레나에 하트와 방패가 놓여 있고, 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
{
}