재차 글을 쓴 이유는... 앞서 쓴 글에서 문제가 있던 부분과 더불어 부질없는 고민도 있었기 때문입니다.

우선 수정된 애니메이션부터 공유해보겠습니다.

메인 FSM
MainStateMachine::Idle State

일단 Layered Blend per Bone이 현재 상황에서는 의미가 없는 기능이었습니다.

Montage가 통째로 회전하더라도 머리의 방향은 AimOffset이 맞춰줄거기 때문에 굳이 Layered를 할 필요가 없었습니다.

그리고 Cache 포즈도 현재 Default 포즈를 따로 필요하지 않는 것 같아 일단은 제거해 두었습니다.

 

이전에 발생한 이슈는 2가지였는데요.

1. 왼쪽으로 고개 회전 시 무한이 회전하는 문제

이건 AimOffset 값 자체가 방향 정보도 포함하고 있어 Tick에서는 무조건 Delta만큼 차감하면 됐었는데, 이걸 다시 Type에 따라 반대로 연산하다 보니 왼쪽은 계속 가산되어서 그 방향으로 회전하게 되었습니다.

 

2. 고개가 90도로 맞게 회전하지 않는 문제

이건 Montage와 관련이 있었는데요.

초반 작업에서 Montage를 1배속으로 플레이 했을 때 90도가 아니라 225도를 회전하는 문제가 있었습니다.

AddControllerYawInput() 안에서 계수가 적용된 것으로 판단하여 MontagePlayRate를 조절하여 2.5배속 재생 되도록 UI에서 조절해 놓았는데, 이 때문에 몸이 90도 회전 하는 동안 -90도가 회전해야 할 머리가 -36도만 회전하였습니다.

그래서 UI에서 직접 입력하던 MontagePlayRate를 TurinInPlaceNotify.h에서 상수로 값을 잡아두고, Montage_Play()에서 MontagePlayRate를 입력하고, 동시에 Tick에서 연산되는 AimOffset에서도 MontagePlayRate를 곱하여 동일한 값만큼 몸과 고개가 움직이도록 조정했습니다.

 

이로서 제자리 회전에 대한 기능은 모두 완료가 되었습니다.

다음에는 방향키에 맞게 걷는 기능과, 회전 중 걷기 시 그 방향으로 걸어가는 기능을 구현할 예정입니다.

'개발일지 > 코어 플레이 개발' 카테고리의 다른 글

22년 10월 29일 비개발일지  (0) 2022.10.30
22년 10월 02일 (비)개발일지  (0) 2022.10.02
22년 09월 27일 개발일지  (0) 2022.09.27
22년 9월 26일 개발일지  (0) 2022.09.26
22년 09월 20일 개발일지  (0) 2022.09.20

+ Recent posts