오늘은 어제 개발 했던 THTriggerBase를 THInRangeTriggerBase, THInteractionTriggerBase, THClimbTriggerBase로 나눴습니다.

 

THInRangeTriggerBase는 범위 안에 캐릭터가 들어가면 일반 로그를 출력하고, 

 

THInteractionTriggerBase는 범위 안에 캐릭터가 들어가면 상호작용을 할 수 있습니다.

 

또한 상호작용 중 범위 밖으로 나가면 상호작용이 취소가 됩니다.

 

하지만 이정도를 구현하고 저녁을 먹다가 문뜩 설계가 잘못 되었다는 사실을 깨달았습니다.

 

위와 같이 나눈 이유는 결국 트리거의 종류가 완전히 기획이 된 것이 아니기 때문이었습니다.

 

하지만 같은 범위 판정 트리거 안에서도 필요한 변수가 다를 수 있으며, 이에 따라 함수가 다르게 적용 된다면 위와 같이 나눈 의미가 없을 것 같습니다.

 

정확히는 위와 같이 특정 트리거 타입에 대하여 상위 클래스를 두는 의미 자체가 없는 것 같습니다.

 

그래서 구조를 변경하고자 합니다.

 

여기서도 2단계로 나뉘는데, 처음에는 THTriggerBase는 Actor Component를 상속 받아 구현을 할 계획이었습니다.

 

그리고 필요한 함정이나 퍼즐마다 이 THTriggerBase를 bind 하려 했습니다.

 

그럴려면 THTriggerBase는 위치, 크기, collision 변경 함수들과 Event bind 함수가 제공되어야 합니다.

 

이렇게 써 놓고 보니 THTriggerBase와 Actor Component와 차이가 없다는 것을 깨달았습니다.

 

최종적으로, THTriggerBase라는 것을 없애는 것이 옳다는 결론에 도달했습니다. 

 

모든 함정, 퍼즐은 Actor Component를 별도로 bind 하고자 합니다.

 

아마 이벤트 조건이 다른 경우에는 별도의 Actor로 처리해도 문제가 없을 것입니다.

 

다만, 이벤트에 따른 호출 함수가 비슷한 기능을 할 경우에는 내부에서 Native 함수를 호출하고, 이 함수를 override 해서 다형성을 생성 하는 것이 더 적절할 것이라 생각합니다.

 

정리를 해보자면

1. Trigger를 상속 관계로 묶지 않고, 각각의 함정과 퍼즐들이 하나의 Actor Component를 bind 하여 각기 다른 방식으로 이벤트를 붙인다.

2. 이벤트 발생 조건이 비슷한 경우에는 bind 함수가 특정 Native 함수를 선언하는 방식으로 구현을 고정하고, 이를 상속 받아 Native 함수가 각각 다른 작업을 하도록 한다.

 

이런 식입니다.

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

20.02.10 개발일지  (0) 2020.02.10
20.02.08 개발일지  (0) 2020.02.08
20.02.05 개발일지  (0) 2020.02.05
20.02.03 개발일지  (0) 2020.02.03
20.02.01 개발일지  (0) 2020.02.01

+ Recent posts