플레이어블 비주얼라이저를 사용하여 플레이어블 API로 생성된 트리와 노드에 관한 이해를 위해 공부한 것을 정리해보았다.
▼ 플레이어블 그래프 비주얼라이저 깃허브 다운로드 링크
https://github.com/Unity-Technologies/graph-visualizer
GitHub - Unity-Technologies/graph-visualizer: Visualizer for your Playable graphs
Visualizer for your Playable graphs. Contribute to Unity-Technologies/graph-visualizer development by creating an account on GitHub.
github.com
PlayableBehaviour 생성
PlayableBehaviour 공용 클래스를 사용하여 커스텀 플레이어블을 생성하는 방법을 실습해보았다.
테스트용 Unity Project를 만든 후, 아래 스크립트에서 PrepareFrame() 가상 메서드를 오버라이드하여 PlayableGraph의 노드를 제어하는 방법으로 구현해보았다.
SetInputMethod()는 각 애니메이션 클립의 블렌드 가중치를 수정하여 클립이 한번에 하나씩만 재생되도록 한다.
유니티 공식 메뉴얼에서는 애니메이션의 시간에 따라 다음 애니메이션이 순서대로 작동하는 식으로 제어했지만,
나는 테스트용 프로젝트 안의 플레이어가 상하좌우의 움직임에서 다른 애니메이션이 보이도록 구현해보았다.(상하는 애니메이션 클립이 같음)
PlayerController에서 InputSystem에 들어오는 Vector2 Value를 읽어 Move() 메서드를 작동시키고 있으므로,
curMoveInput의 x값과 y값을 통해 캐릭터가 상하좌우 중 어느 방향으로 움직이고 있는지 알 수 있다.
(curMoveInput의 x값이 양수라면 플레이어는 오른쪽을 향해 움직이고, 음수라면 왼쪽을 향해 움직인다.
curMoveInput의 y값이 양수라면 플레이어는 위쪽을 향해 움직이고, 음수라면 아래쪽을 향해 움직인다.)
PlayableBehaviour를 상속 받는 샘플 클래스에서 해당 값으로 판단하여 어떤 조건에서 어느 애니메이션을 작동해줄지
PrepareFrame() 메서드에 작성해주었고, 유니티 안에서 PlayerController의 인스펙터에서 확인해줄 수 있게 해주었다.
결과
PlayableGraph 창과 우측의 PlayerController 인스펙터 창을 보면
플레이어의 Input x값이 양수(오른쪽으로 움직이는 상황)이기 때문에 위 샘플 스크립트의 PrepareFrame()의 조건 중
else if (controller.inputX > 0) m_CurrentClipIndex = 1; 을 만족하여 Right 애니메이션이 나오게 된다.
Playable API를 처음 접해보았는데, 앞으로 사용하게 될 수도 있고 공부를 미리 하면 도움이 될 것 같아 실습을 해보았다.
간단한 예제를 실습을 하여 무리 없이 원하는대로 구현은 했지만,
앞으로 더 다양한 애니메이션을 적용해야할 상황이나 동적으로 애니메이션 클립을 할당하고 제거하는 등의 작업은 더 공부하고 실제로 해보아야할 것 같다.
참고) Unity Documentation
https://docs.unity3d.com/kr/2022.3/Manual/Playables-Examples.html