플레이어와 펫의 공격기능은 얼추 완성이 되가고 있다. 그런데 수 많은 아주 많은 적이 몰려와도 화살 몇방이면 모두 죽어버리는 것이다. 여기서 최대 공격가능 대상 수를 만들어 구현해야겠다는 생각을 한다.
구현방법은 매우 쉬웠다. Do N노드는 실행이 파라미터N만큼만 진행되게 하는 기능을 가진다. 그렇기에 공격에 닿은 적이 담긴 배열을 N번만 데미지를 주면 되는 것이다. (가장 가까운 적을 공격하는 기능은 이후에)
하지만 여기서 큰 문제가 생겨버렸다. 무슨 이유인지 Num of Bow Attack을 2로 설정해도 하나의 적만을 공격할 수 있는 것이다. 수 많은 실행 끝에 이유를 찾을 수 있었다.
역시 원인은 바로 옆에 있었다. Pet 클래스를 구현하면서 펫이 자유롭게 이동하는데 펫의 넓은 Detected collision이 Array에 담겨버린 것이다. 즉 Pet을 적으로 간주하고 배열 속에 들어가 있던 것이고 Skeleton보다 Pet이 배열의 앞쪽에 있어 Pet에게 데미지를 부여하고 있던 것이다.
콜리전 반응에서 World Dynamic을 무시하게 만들면 화살 오브젝트에 반응하지 못하고 공격대상이 아니게 된다.
이 방법이 아니라 Ignore to Actor에 펫을 넣어 진행해도 되나 모든 노티파이에 추가해야 한다는 불편한 점이 있어 콜리전을 설정했다.
나중에 부가기능이 추가될 때 콜리전 관련해서 문제가 생긴다면 다시 이 게시글을 찾아와야 할 것같다.
부가기능을 만들면 발생하는 에러를 찾고 해결하는 능력이 중요하다는 것을 다시 깨닫는다.
'ToyProject > RedCaped' 카테고리의 다른 글
[언리얼엔진 5] 12. Dynamic Lighting PaperZD + Normal Map (0) | 2023.01.06 |
---|---|
[언리얼엔진 5] 11. Lightning Pet (0) | 2023.01.05 |
[언리얼엔진 5] 9. Pet Class (0) | 2023.01.03 |
[언리얼엔진 5] 8. Particle and Collision Attack (0) | 2023.01.02 |
[언리얼엔진 5] 7. Current Player State + Error Handling (0) | 2022.12.30 |