오늘은 피격 판정을 마저 개발하였다.

 

기능이 제대로 구현이 되었는지 판단을 하기 위해 component를 인게임 상에서 볼 수 있게 하려 했다.

 

이 방법은 존재하지 않은 것인지, 있는데 못찾은 것인지 모르겠지만 component 범위를 확인하는 방법은 찾았다.

 

에디터에서 character를 보면 component 범위를 알 수 있었다.

 

이를 통해 hitbox와 damagebox의 대략적인 위치와 크기를 조정하였다.

 

2일 전의 hitbox 구현은 잘못 되어 있었는데, 그 이유는 AttachToComponent를 사용했기 때문이다.

 

다른 코드에서 SkeletalMeshComponent를 이 함수를 이용해 붙이는 것을 발견하고 사용을 해봤는데, component가 정상적으로 붙지 않았다.

 

그래서 SetupAttachment를 이용해 중지 부분에 component를 붙였다.

 

이전에는 그저 컴포넌트끼리 붙이는 것으로만 사용했는데, 도큐먼트를 보니까 그 중 특정 소켓을 지정 할 수 있었다.

 

두번째로 해결한 이슈는 damagebox 판별이다.

 

몸통에 hitbox가 자신의 손에 달린 damagebox와 collision을 하는 것을 막아야 했다.

 

처음에는 hitbox의 parents와 damagebox의 parents가 같은지 비교를 하였으나 원하는대로 작동하지 않았다.

 

구조상 hitbox는 root component에, damagebox는 특정 소켓에 붙어 있기 때문인 것으로 추측된다.

 

조금을 더 찾다가 component들이 GetAttachmentRoot 함수를 제공하는 것을 발견했다.

 

이를 통해 두 component들의 root component를 비교하여 이들이 동일할 경우에는 피격 판정이 일어나지 않도록 하였다.

 

코드에 필요 없는 부분들을 정리하다가, Layered 된 애니메이션 작동 여부를 알려주는 bLayeredMotion 변수가 사용되지 않은 것을 발견하였다.

 

이를 사용하도록 적용 하였더니, 피격 판정이 정상적으로 일어나지 않았다.

 

정확히는, 애니메이션은 정상적으로 재생이 되나, 근접공격이 할당된 키를 누르자 bLayeredMotion 값이 반대로 적용되었다.

 

이에 대한 코드들을 살펴 보았으나, 중간에 값이 반전되는 원인을 찾지 못하였다.

 

때문에 이 부분을 이슈에 bug로 작성해 남겨 두고, 우선 기능이 정상 작동하도록 정리를 하였다.

 

마지막으로, 범위 판정 트리거 부분은 개발을 잠깐 시도 하였으나, 여전히 미구현인 상태이다.

 

에디터에서 컴포넌트 범위가 보이지 않는 것으로 보아 C++ 코드에서 추가한 Component에 추가적인 작업이 필요한 것으로 판단된다.

 

오늘 저녁과 내일은 기획을 정리하고, 월요일에는 피격에 따른 데미지 적용과 범위 판정 트리거 기능을 우선적으로 구현 할 예정이다.

 

일주일 가까이 걸릴 것으로 예상했던 피격 판정이 하루만에 끝나 다행이라 생각한다.

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

20.02.05 개발일지  (0) 2020.02.05
20.02.03 개발일지  (0) 2020.02.03
20.01.31 개발일지  (0) 2020.01.31
20.01.30 개발일지  (0) 2020.01.30
20.01.29 개발일지  (0) 2020.01.29

+ Recent posts