오늘은 ClimbTrigger에 이벤트를 적용하다가 하루가 다 지나갔습니다.

 

결론부터 말하자면, 뭐가 문제인지 모르겠습니다.

 

BP_THCharacter의 View

이것이 제가 지금 쓰는 예시 Character입니다.

THCharacterBase라는 C++ class를 생성하고, BP로 구현한 것으로, Overlap Event는 C++ 상으로 구현되어 있습니다.

3개가 나란히 배치되어 있는 것이 ClimbTrigger들이고, 이들과 겹쳐있는 세로로 긴 것이 InteractionTrigger입니다.

 

InteractionTrigger를 초기화 하는 함수

이 함수는 InteractionTrigger를 초기화 하는 함수로, 생성자에서 호출이 됩니다.

내부에는 사이즈, 기준 component, Collision 등이 설정됩니다.

 

ClimbTrigger를 초기화 하는 함수

이 함수는 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

+ Recent posts