모든 것에 피해 주기
Coddy Unity 여정의 Unity 게임 아키텍처 섹션에 포함된 레슨. 50개 중 43번째.
챌린지
중급이제 전투가 양방향으로 이루어집니다. 이전 수업의 모든 내용을 유지하세요. 적에게는 더 이상 태그를 지정하지 않습니다. 대신 휘두르기 공격은 인터페이스를 통해 피해를 줄 수 있는 대상을 찾고, 적도 같은 인터페이스를 통해 영웅에게 피해를 줍니다.
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
{
}