시야 돌릴 때 자동 회전 되는 기능 구현에 앞서 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가 호출되는 부분이 서로 엉켜 있는 것 같은데 어떻게 구동되는지 중단점도 안 찍히더군요.

결국 제가 내린 결론은 이 예시를 보면서 확인한 대략적인 구현 방식을 기준으로 직접 헤딩을 해야 한다는 점이었습니다.

  1. 특정 상태가 되면 Montage를 직접 재생한다.
  2. Montage 전체를 하나의 AnimNotify로 감싼다.
  3. AnimNotify::Begin에서 Montage 호출을 막아주고 AnimNotify::End에서 이를 풀어준다
  4. AnimNotify::Tick에서 캐릭터를 회전시킨다.
  5. 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

+ Recent posts