Menu
CoddyTech

모든 것에 피해 주기

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

challenge icon

챌린지

중급

이제 전투가 양방향으로 이루어집니다. 이전 수업의 모든 내용을 유지하세요. 적에게는 더 이상 태그를 지정하지 않습니다. 대신 휘두르기 공격은 인터페이스를 통해 피해를 줄 수 있는 대상을 찾고, 적도 같은 인터페이스를 통해 영웅에게 피해를 줍니다.

  • IDamageable은 메서드 하나를 선언합니다. void TakeDamage(int amount);
  • Enemy는 이를 구현합니다. Inspector에서 설정하는 health, damage, attackEvery를 추가합니다(grunt는 각각 2, 1, 1이고 dasher는 1, 2, 1입니다). TakeDamage는 health에서 amount를 빼고, 체력이 0 이하가 되면 적을 제거합니다. Start에서 영웅의 IDamageable도 저장하세요. 매 프레임 영웅이 1.2 단위 이내에 있으면 TakeDamage(damage)를 호출하되, attackEvery초마다 최대 한 번만 호출합니다.
  • Hero도 이를 구현하며, Inspector에서 설정하는 swingDamage(1), maxHealth(5), safeTime(1)과 Awake에서 maxHealth로 시작하는 health를 추가합니다. 공격을 받으면 amount만큼 체력이 줄고, 체력을 Hero HP: 4로 기록하며, safeTime초 동안 추가 공격으로부터 영웅을 보호합니다. 체력이 0이 되면 The hero falls를 기록하고 Hero 스크립트를 끕니다(enabled = false). 쓰러진 영웅은 공격을 무시합니다.
  • 휘두르기 공격은 더 이상 태그를 확인하거나 대상을 제거하지 않습니다. 사정거리 안에 있고 앞쪽에 있으며 IDamageable을 가진 모든 대상에 TakeDamage(swingDamage)를 호출합니다.

Play를 눌러 전투한 다음 Check를 누르세요.

직접 해보기

// 이후 강의에서 이를 채웁니다: 피해를 입을 수 있는 모든 것.
public interface IDamageable
{
}

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