오늘은 범위 판정 트리거를 구현하였습니다.

이 기능은 매우 간단하지만 2가지 문제가 있었습니다.

하나는 overlap을 판정하는 Box Component가 제대로 생성이 되지 않는다는 것.

다른 하나는 collision 선언이 되었음에도 collision이 발생하지 않는다는 것.

 

첫번째 문제는 Box Component의 사이즈를 지정하는 방식을 변경했습니다.

원래는 FVector 변수를 두고, BP 하위 클래스에서 FVector 값을 조정하였는데 이를 모두 C++ 상위 클래스에서 작업하였습니다.

이렇게 하니까 Component가 제대로 보이기 시작했습니다.

아마 나중에는 width, height, length를 따로 두거나, Box Component를 protected로 두어 하위 클래스에서 직접 접근 가능하도록 할 것 같습니다.

 

두번째는 collision을 변경했습니다.

기존에는 InteractionArea라는 collision을 선언 했는데, 이 부분이 문제인 것 같아 몇번을 보다가 Trigger라는 것이 이미 존재하는 것을 발견했습니다.

이를 Trigger로 변경을 하니까 제대로 작동하였습니다.

솔직히 왜 문제였는지 아직 파악을 못했습니다.

 

그리고 기획 부분에 변화? 라고 하기는 그렇고 정리가 하나 되었습니다.

이번에 트리거 구현 마일스톤에서 구현 할 트리거는 4가지였습니다.

피격/타격, 범위 판정, 상호작용, 등반.

이 중 피격/타격은 완전 별도이니 제외를 하고, 나머지 3개가 기능이 큰 차이가 없다는 것을 깨달았습니다.

범위 판정은 넓은 범위 안에 캐릭터가 들어오면 특정 기능을 해야 합니다.

등판은 좁은 범위 안에 캐릭터가 들어오면 애니메이션을 해야 합니다.

상호작용은 좁은 범위 안에 캐릭터가 들어왔을 때, 상호 작용 키를 누르고 있으면 특정 기능을 해야 합니다.

결국 범위 판정만 구현이 된다면, 그 범위와 기능만 다르게 적용하면 되는 것입니다.

 

여기서 문제는 기능이었습니다.

트리거는 대부분 함정 쪽과 연관이 깊은데, 각 기능이 어떤 파라미터를 받는지 고정을 하기 힘들다는 것이었습니다.

여기서 해결 방안은 두가지였습니다.

하나는 모든 트리거의 상위 클래스인 THTriggerBase에서 OnComponentBeginOverlap 기능에 델리게이트 하는 함수인 OnOverlapBegin 함수를 override 할 수 없으니 내부에 모든 기능 함수들을 다 넣어 두는 것.

사실상 힘들고 복잡하고 더러운 방식입니다.

다른 하나는 Box Component를 하위 클래스에서 접근할 수 있게 하고, OnCOmponentBeginOverlap 기능을 하위 클래스에서 따로 붙이게 하는 방식입니다.

훨씬 깔끔한 방식입니다.

 

여기서 저는 당연히 후자를 생각하고 있습니다.

그래서 오늘 개발한 기능을 기반으로 각 트리거 종류 별로 기능을 분배하고자 합니다.

상호작용은 잘 하면 내일 안에 끝날 것 같습니다. 그럼 남은 일주일은 등반에 투자를 하고자 합니다.

 

여기와 다음 퍼즐/트랩까지 구현이 완료가 되면 작년 2월부터 6월? 까지 개발 하다가 엎었던 부분만큼 개발이 끝납니다.

일일 개발일지 쓰는게 조금 부담스럽긴 하지만 슬슬 적응이 되는 것 같습니다.

가능하면 주말 안에 기획서를 개선하고 마일스톤을 좀 손을 보고자 합니다.

굉장히 오랫동안 이 프로젝트를 꿈꾸고 개발해 왔는데, 그 중심에 있던 Auto Map Creation은 아마도 제외를 해야 하지 않을까 예측합니다.

'개발일지 > Treasure Hunter' 카테고리의 다른 글

20.02.08 개발일지  (0) 2020.02.08
20.02.06 개발일지  (0) 2020.02.06
20.02.03 개발일지  (0) 2020.02.03
20.02.01 개발일지  (0) 2020.02.01
20.01.31 개발일지  (0) 2020.01.31

+ Recent posts