오늘은 ClimbTrigger에 이벤트를 적용하다가 하루가 다 지나갔습니다.
결론부터 말하자면, 뭐가 문제인지 모르겠습니다.
이것이 제가 지금 쓰는 예시 Character입니다.
THCharacterBase라는 C++ class를 생성하고, BP로 구현한 것으로, Overlap Event는 C++ 상으로 구현되어 있습니다.
3개가 나란히 배치되어 있는 것이 ClimbTrigger들이고, 이들과 겹쳐있는 세로로 긴 것이 InteractionTrigger입니다.
이 함수는 InteractionTrigger를 초기화 하는 함수로, 생성자에서 호출이 됩니다.
내부에는 사이즈, 기준 component, Collision 등이 설정됩니다.
이 함수는 ClimbTrigger를 초기화 하는 함수로, 역시 생성자 안에서 호출이 됩니다.
이 함수에는 OnComponentBegin/EndOverlap 이벤트에 함수가 할당되지 않는데,
ClimbTrigger별로 다르게 기능이 작동해야 해서 이 함수 호출 후 생성자 내에서 따로 할당하고 있습니다.
보시는 것과 같이 두 함수의 기능적인 큰 차이는 없습니다.
하지만 Interaction은 잘 작동하는 반면, Climb은 작동하지 않습니다.
이 문제를 해결하기 위해 다음과 같은 방법을 구현해 보았습니다.
1. BP에서 직접 함수를 할당한다. -> 정상적으로 함수가 실행 됨.
2. BP에서 직접 CPP상에서 할당했던 함수를 재할당한다. -> 재할당된 함수는 작동하지 않음.
3. ClimbTrigger와 InteractionTrigger가 서로 닿지 않도록 위치를 조절 -> 여전히 작동 안함
4. 초기화 함수 내부에서 Event에 함수를 할당함 -> 여전히 작동 안함.
처음에는 BP에서 하나하나 선언해줄까 했지만, 구현하는 기능이 특정 Character만 해당되는 것이 아니라
모든 Character들에게 공통적으로 구현되어야 하기에 CPP에서 구현되어야 할 것 같습니다.
BP에서 직접 할당하면 작동하는 것으로 보아 Trigger 선언에는 문제가 없는 것 같습니다.
내일은 할당을 BeginPlay나 PostInitialize에서 해보거나,
함수들의 이름을 더 짧게 줄여볼 생각입니다.
'개발일지 > Treasure Hunter' 카테고리의 다른 글
20.05.09 개발일지 (0) | 2020.05.09 |
---|---|
20.05.07 개발일지 (0) | 2020.05.07 |
20.50.04 개발일지 (0) | 2020.05.04 |
20.04.30 개발일지 (0) | 2020.04.30 |
20.04.29 개발일지 (0) | 2020.04.29 |