20.02.10 개발일지
오늘은 등만이 가능한 Actor들의 최상위 C++클래스인 THClimbBase와
현재 구현이 가능한 Rope와 Ladder의 C++ 상위 클래스인 THRopeBase, THLadderBase를 작성했습니다.
"작성"이라 한 이유는 아직 기능이 구현 됨을 확인하지 못했기 때문에...
그저께부터 시작한 오버워치 리그 때문에 생활 패턴이 좀 꼬였는데 이 때문에 오늘 체력이 많이 부족해 개발 시간이 적었습니다.
그래도 개발 양은 크게 차이가 없는 것 같습니다.
시간 부족하니까 양 채우려고 집중 해서 그런가...
이것 외에 평소와의 차이점이 한가지 더 있습니다.
바로 개발하면서 구조 개선이 되었다는 점입니다.
처음부터 좋은 구조를 바로 생각해 냈으면 더 좋았겠습니다만,
이전에는 하루 개발을 다 하고 자기 전에 개선된 구조가 생각이 났다면 오늘은 개발을 하고 잠깐 숨을 돌릴 때 개선된 구조가 생각이 났습니다.
구체적으로는 Character와 THClimbBase와의 Collision 시 필요한 트리거들과 이벤트 할당에 관한 것입니다.
처음 생각 했을 때에는 이 모든 것들을 THClimbBase에서 처리하도록 했습니다.
이벤트는 당연히 이 Actor 안에서 처리하고, 처리 과정에서 Character를 받아야 하니 트리거도 Actor 안에서 처리했습니다.
그런데 이를 개발하면서 트리거들 중 동일한 부분이 반복되었습니다.
그래서 이 부분을 함수로 묶었는데, 묶인 함수에서 선언하는 함수가 모두 Character의 함수들이었습니다.
게다가 원래 외부로 공개되지 않은 변수에 대한 Setter들을 선언해야 했습니다.
결국 트리거 처리를 Character에서 해주었습니다.
이 뒤로는 손쉽게 정리가 되었습니다.
상황 별로 차이가 나는 트리거 값들은 두가지로 나뉘었습니다.
현재 캐릭터가 처한 상황을 나타내거나, 캐릭터가 collision을 하는 Actor를 가르키거나.
전자는 파라미터로 Actor 안에서 넘겨주었고, 후자는 THClimbBase를 상속 받는 THRopeBase와 THLadderBase에서 Character의 트리거 처리를 wrapping하는 함수를 override한 뒤 해당 설정을 추가했습니다.
Unreal을 쓰면서 정말 간만에 기존에 알던 구조로의 개발을 고민하고 적용해본 것 같습니다.
이 뒤로는 각 Base Actor를 상속받는 BP Example들을 만든 뒤 맵에 추가했습니다.
다만 컴파일 에러가 없을 뿐 기능 확인은 아직 못한 상태입니다.
수요일, 목요일동안 이 부분을 처리해 구현을 할 예정입니다.