오늘은 메인 UI에서 버튼 이벤트를 붙여보았습니다.

다행히도 어제 주문한 책이 모두 배달 와서 이것 저것 보면서 시도해볼 수 있었습니다.

또한 책과 검색을 통해 대략적인 Unity의 개발 방식을 이해할 수 있었습니다.

그래도 아직은 언리얼 개발 때만큼 집중이 되지는 않습니다.

좀 더 집중있게 하여 하루에 더 많은 일을 진행 할 수 있으면 합니다.

 

다음 주에 할 일은 두가지 정도로 생각하고 있습니다.

 

하나는 메인 UI에서 Next, Preview 버튼을 누를 시 텍스트 뿐만 아니라 실제 아바타에 이미지를 추가하는 기능을.

다른 하나는 멀티플레이 기능을 제외하고 세션 생성 또는 탐색 시 새로운 UI를 띄우는 기능을 구현하고자 합니다.

 

이와 동시에 시간이 남으면 블루투스로 구현 하고자 하는 멀티플레이 방식의 구현 방식과 테스트 방식을 고민해보려 합니다.

'폐기된 게시판 > MBGC' 카테고리의 다른 글

20.02.14 개발일지  (0) 2020.02.14
20.02.11 개발일지  (0) 2020.02.11
20.02.04 개발일지  (0) 2020.02.04
20.01.31 개발일지  (0) 2020.01.31
20.01.28 개발 일지  (0) 2020.01.28

오늘은 어제 개발 했던 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

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

이 기능은 매우 간단하지만 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