시야 돌릴 때 자동 회전 되는 기능 구현에 앞서 AdvancedLocomotionSystemV 프로젝트에서의 구현 방식을 살펴봤습니다.
제가 분석한 바로는 대략 다음과 같습니다.
- AnimInstance의 Tick에서 매번 제자리 회전 Montage를 재생하고자 합니다.
Character에서 특정 각도에 도달하여 회전 상태가 바뀌기 전까지 제자리 회전 Montage를 재생할 수 없습니다. - Character에서 상태가 바뀌어 Montage를 재생하게 되면 0.0초에서 AnimNotify가 발생됩니다.
- AnimNotify::Begin에서 AnimInstance에 회전 Montage이 실행되고 있다는 조건을 전달합니다.
이 조건은 Character에서 주는 상태와 다른 분기문에서 Montage 반복 재생을 막습니다. - AnimNotify::Tick에서는 DeltaTime과 MontagePlaytime을 이용해 캐릭터의 각도를 조절해줍니다.
- AnimNotify::End에서 AnimInstance에 회전 Montage를 제거해주면서 다시 조건이 만족됩니다.
사실 이 이상으로 파악을 하지는 못했습니다.
Montage가 실행되는 부분이 Montage 앞에서 AnimNotify가 호출되는 부분이 서로 엉켜 있는 것 같은데 어떻게 구동되는지 중단점도 안 찍히더군요.
결국 제가 내린 결론은 이 예시를 보면서 확인한 대략적인 구현 방식을 기준으로 직접 헤딩을 해야 한다는 점이었습니다.
- 특정 상태가 되면 Montage를 직접 재생한다.
- Montage 전체를 하나의 AnimNotify로 감싼다.
- AnimNotify::Begin에서 Montage 호출을 막아주고 AnimNotify::End에서 이를 풀어준다
- AnimNotify::Tick에서 캐릭터를 회전시킨다.
- Tick 사용을 겁내지 말자.
위 사항을 중심으로 하나씩 만들어보고자 합니다.
그리고 이거랑 별개로 VA를 구독하거나 AWS에 사설 Git 서버를 넣어서 VCS를 넣는 방안을 크게 고민 중입니다.
커밋 단위에서만 관리하는게 생각보다 불편하더라구요...
'개발일지 > 코어 플레이 개발' 카테고리의 다른 글
22년 09월 20일 개발일지 (0) | 2022.09.20 |
---|---|
22년 09월 17일 개발일지 (0) | 2022.09.18 |
22년 09월 13일 개발일지 (0) | 2022.09.13 |
22년 09월 09일 개발일지 (0) | 2022.09.09 |
22년 09월 02일 개발일지 (0) | 2022.09.02 |