오늘은 하루를 꼬박 투자해 Melee Attack에 Interface를 적용하였습니다.

 

구현 방식은 다음과 같습니다.

1. Melee Attack 키를 누를 시 LayeredMotion 트리거가 켜집니다.

2. Animation FSM에서 동기화 된 LayeredMotion 트리거에 따라 Melee Attack Montage가 재생됩니다.

3. Montage가 재생되자마자 Left Hand HitBox의 Hit 판정 트리거가 켜집니다.

4. Montage의 적절한 중간 지점에서 Left Hand HitBox의 Hit 판정 트리거가 꺼지고,
한번 충돌 판정 난 객체들을 저장하는 Buffer가 비워집니다.

5. 3과 4사이에 HitBox가 무언가와 Collision이 발생했을 경우 HitBox의 Collision 이벤트가 발생합니다.

6. Collision 대상이 자기 자신(Character)와 다르고,
동일한 Melee Attack 모션 중 한번도 Collision이 발생하지 않았으며,
현재 Melee Attack 중일 경우 데미지를 계산합니다.

 

왜 처음 생각하고 개발 할 때는 엄청나게 복잡했는데 다 만들고 정리하니까 이리도 간단한지 모르겠습니다.

이런걸 이렇게 시간 들여서 만들었나 자괴감 들고 괴롭습니다.

이렇게나 못했다니...

 

Hit 판정 다음에는 Trap에 대한 것인데 여기에 대해 크나큰 고민이 있습니다.

 

Trap과 Puzzle의 관계에 대해서는 처음 구조를 구상했을 때부터 고민이 많았습니다.

우선 기본적으로 두 Object 모두 범위 판정이 필요하기에 THObjectBase를 만들고,
THTrapBase, THPuzzleBase는 이를 기반으로 만들어졌습니다.

그리고 Puzzle은 대체로 Trap 성분도 지니고 있기에 Puzzle이 Trap을 지니고 있어야 합니다.

 

여기서 Trap을 상속 받는 방법과 Trap을 Component로 가지고 있는 방법이 있는데 저는 후자를 택했습니다.

Puzzle과 Trap은 속성이 완전히 다르다고 생각하기 때문입니다.

여기서 한가지 문제가 발생하는데, Puzzle의 범위 판정 Component가 쓸모 없어졌습니다.

범위 판정을 이미 Puzzle이 가지고 있는 Trap이 하고 있기 때문입니다.

 

이를 Interface로 개선 하면서 관계에 대해 다시 고민을 하게 되었습니다.

Puzzle은 Trap을 가지고 하나만 가지고 있을 수도 있지만, 여러개를 가지고 있을 수도 있고, 없을수도 있습니다.

부착된 Trap도 Puzzle 범위와 동일하게 작동해야 할 수도 있고, 그렇지 않을수도 있습니다.

그래서 이 구조를 어떻게 해야 할지를 고민하다가, Trap과 Puzzle의 관계부터 다시 생각을 하게 되었습니다.

 

때문에 이에 대한 답을 내는데에 시간이 좀 걸릴 것 같습니다.

우선은 남은 시간 짬짬히 Melee Attack의 판정을 다듬을 것 같습니다.

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

20.07.27 개발일지  (0) 2020.07.27
20.07.26 개발일지  (0) 2020.07.26
20.07.22 개발일지  (0) 2020.07.22
20.07.20 개발일지  (0) 2020.07.20
20.07.16 개발일지  (0) 2020.07.16

+ Recent posts