오늘 처음 시도한 일은 Character에게 Pawn Collision이 설정된 Capsule Component를 배치하여 Character의 말단 부분에서도 중앙 부분과 같이 충돌이 되는 것이었습니다.

 

하지만 실제로 적용 해보았지만, 여전히 몸통을 관통하였습니다.

 

이 문제는 당장 해결할 수 없다고 판단하여 뒤로 미루어 두었는데, 다른 Issue를 해결하기 위해 검색하다가 한가지 방법을 찾았습니다.

그것은 Root Motion을 이용하는 방법이었습니다.

 

우선은 현재 고민 중인 Issue를 해결하고 적용해볼 예정입니다.

 

 

두번째로 시도한 것은 bLayeredMotion의 값이 반대로 들어가는 문제였으나, 확인 결과 문제를 찾을 수 없었습니다.

 

아마도 수 개월간의 코드 수정 과정에서 해결이 된 것으로 보입니다.

 

 

세번째로 Dash Jump Bug인데, 이 부분은 두가지 문제로 인해 보류하였습니다.

 

하나는 버그가 발생하는 조건이 명확하지 못해서 상황을 파악하지 못한다는 것.

 

다른 하나는 뒤에서 얘기 할 MovementComponent 부분을 해결하면 문제가 해결 될 수 있다는 것 입니다.

 

 

네번째로 Check Interaction Object Enhance인데 이는 앞서 미리 수정하였기에 Issue만 정리하였습니다.

 

 

다섯번째로, CharacterMovementComponent에 Character의 행동 관련 기능들을 이동하는 Issue입니다.

 

찾아본 결과, Action Bind는 Character와 Player Controller에서 구현이 가능합니다.

 

이 중 RTS와 같이 Player가 한번에 여러 Character를 조종하는 경우가 아니면, 보통은 Character에서 Bind합니다.

 

다만 이동이나 회전과 같은 기본 기능들은 Player Controller에서 bind 한다고 합니다.

 

MovementComponent의 역할은 이 이동, 회전 이벤트에서 호출하는 함수들을 따로 제공하는 역할입니다.

 

이 구조를 기억하고, 토요일에는 기능들을 재분리, 구현 할 예정입니다.

 

이후 시간이 남는다면, Trap에도 MovementComponent를 적용하고자 합니다.

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

20.04.20 개발일지  (0) 2020.04.20
20.04.18 개발일지  (0) 2020.04.18
20.04.15 개발일지  (0) 2020.04.15
20.04.13 개발일지  (0) 2020.04.13
20.04.11 개발일지  (0) 2020.04.11

총선 투표날. 사전투표를 하였기에 개발만 하였습니다.

 

오늘은 Character의 Hit Event가 여러번 일어나는 것을 방지하는 작업을 하였습니다.

 

처음에 고려한 것은 Semaphore였습니다.

 

Component와 OverlapStart 이벤트가 발생하면 Semaphore 값을 올려주고,
OverlapEnd 이벤트가 발생하면 Semaphore 값을 내려주는 방식입니다.

 

그리고 Semaphore 값이 1일 때에만 최초 타격으로 인정하여 데미지가 가해집니다.

 

하지만 막상 구현을 해놓으니, 움직일 때는 물론이고 가만히 있을 때에도 생각하는것 만큼 Semaphore 값이 잘 작동하지 않았습니다.

 

다음 구현한 방식은 Mutex를 사용하는 방식입니다.

 

nullptr로 초기화된 UCapsuleComponent 변수를 하나 두고, OverlapStart 할 때마다 이 변수 값을 체크합니다.

 

변수 값이 nullptr이면 최초 타격으로 인식하여 데미지를 주고, 값을 저장합니다.

 

변수 값이 nullptr이 아니면 두번째 세번째 타격이기에 데미지를 주지 않습니다.

 

하지만 이 방식도 문제가 있었습니다.

 

여러번 타격을 하는 과정에서 Mutex가 꼬이는 경우가 발생하였고, 값의 초기화가 안되기도 하였습니다.

 

최종적으로 결정한 것은 이 Mutex를 두개를 사용하는 것입니다.

 

각각의 변수는 최초 타격 Component와 피격 Component입니다.

 

판정 시 두 변수가 모두 nullptr이면 최초 타격으로 인식하고, 타격 Component와 피격 Component를 저장합니다.

 

또한 기존에는 OverlapEnd 시에 판정을 초기화 하지만, 이번에는 이 과정도 OverlapStart 이벤트에 추가하였습니다.

 

아직은 팔에는 Collision이 Ignore 되지 않아 몸을 통과하기에, 동일 Component에 2번 Hit 이벤트가 발생할수도 있기 때문입니다.

 

위의 두 변수에 저장된 Component들과 동일한 타격 판정이 일어나면, 두 변수 값을 nullptr로 초기화 합니다.

 

또한 이 외에 Hit Montage가 재생이 끝난 뒤에도 위 초기화 과정을 추가하였습니다.

 

그 결과, 타격 모션 1회당 판정이 1번만 발생하도록 하였습니다.

 

이후 각 Mesh의 Part들에게 Ignore Collision을 두려고 하였으나, 한번 오류가 나서 실패를 하고 원래대로 돌린 상태입니다.

 

내일은 이 실패한 부분을 구현하고, Hit 이벤트 부분에 변화된 점을 살펴본 뒤 구현을 수정할 예정입이다.

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

20.04.18 개발일지  (0) 2020.04.18
20.04.16 개발일지  (0) 2020.04.16
20.04.13 개발일지  (0) 2020.04.13
20.04.11 개발일지  (0) 2020.04.11
20.04.09 개발일지  (0) 2020.04.09

오늘은 PUN2에서 Session(Room)과 Client간에 정보를 주고받는 방식에 대해 조사를 해보았습니다.

 

찾아보니 RPC를 이용하는 방법이 있어 해당 자료를 읽고 공부를 하였습니다.

 

하지만 아직 어떻게 쓰는 것인지 정확히 파악하지 못하여 개발 단계로는 진입하지 못했습니다.

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

20.04.21 개발일지  (0) 2020.04.21
20.04.17 개발일지  (0) 2020.04.17
20.04.10 개발일지  (0) 2020.04.10
20.04.07 개발일지  (0) 2020.04.07
20.04.03 개발일지  (0) 2020.04.03

+ Recent posts