스크립트에서 모션 재생

업데이트: 2020/01/30

이 페이지에서는 Cubism 모델에 MotionController를 설정하는 절차를 설명합니다.
다음은 「SDK 가져오기」를 수행한 프로젝트에 추가하는 것을 전제로 합니다.

개요

Unity의 Mecanim을 사용하지 않고 스크립트에서 애니메이션을 재생하는 경우 Cubism SDK for Unity는 「CubismMotionController」라는 구성 요소를 사용하여 설정할 수 있습니다.

CubismMotionContoller에 대한 자세한 내용은 「Motion」를 참조하십시오. 

CubismMotionController의 동작에는 Animator 컴포넌트가 필요합니다.
그러나 CubismMotionController는 Animator의 AnimatorController를 사용한 모션 재생과 공존할 수 없습니다.
따라서 CubismMotionController로 모션을 재생할 때 Animator에 AnimatorController를 설정하지 마십시오.

Cubism 모델에 위의 설정을 하려면 다음 절차를 실시하십시오.

  1. CubismMotionController를 연결
  2. AnimationClip을 재생시키는 명령을 호출하는 컴퍼넌트를 준비
  3. 모션을 재생하는 버튼 생성

1. CubismMotionController를 연결

모델의 루트가 되는 GameObject에 애니메이션을 재생하는 「CubismMotionController」를 연결합니다.

CubismMotionController에는 하나의 설정 항목이 있습니다.

– Layer Count: CubismMotionController가 관리하는 애니메이션 레이어의 총수입니다. 설정하는 값의 범위는 1 이상.

CubismMotionController를 연결할 때 GameObject에 Animator 또는 CubismFadeController가 연결되어 있지 않으면 동시에 연결됩니다.

CubismMotionController는 모션 재생에 Playable을 사용하기 때문에 Animator가 필요합니다.
Animator 컴포넌트의 Controller에 AnimatorController가 설정되어 있는 경우 그쪽이 우선됩니다.
CubismMotionController를 사용하는 경우 여기에 아무 것도 설정하지 마십시오.

또한 CubismFadeController는 CubismMotionController가 모션과 모션의 블렌드에 MotionFade를 사용하기 때문에 필요합니다.
CubismFadeController.CubismFadeMotionList가 설정되지 않은 경우 생성된 .cadeMotionList를 설정합니다.
.fadeMotionList의 설정에 대해서는 「Mecanim에서 모션 페이드 유효화」를 참조하십시오. 

2. AnimationClip을 재생시키는 명령을 호출하는 컴퍼넌트를 준비

「MotionPlayer」라는 C# 스크립트를 작성하고 코드를 다음과 같이 다시 작성합니다.
여기에서는 인수의 AnimationClip을 재생하도록 하고 있습니다.

using Live2D.Cubism.Framework.Motion;
using UnityEngine;

public class MotionPlayer : MonoBehaviour
{
    CubismMotionController _motionController;

    private void Start()
    {
        _motionController = GetComponent<CubismMotionController>();
    }

    public void PlayMotion(AnimationClip animation)
    {
        if ((_motionController == null) || (animation == null))
        {
            return;
        }

        _motionController.PlayAnimation(animation, isLoop: false);
    }
}

1에서 CubismMotionController를 연결한 GameObject에 만든 MotionPlayer를 연결합니다.

이것으로 스크립트에서 모션을 재생하는 설정이 완료되었습니다.
외부 스크립트 등에서 MotionPlayer.PlayMotion()을 호출하고 인수에 재생하고 싶은 AnimationClip을 전달하여 모션을 재생시킬 수 있습니다.

여기에서는 버튼으로 이 함수를 호출합니다.

3. 모션을 재생시키는 버튼 생성

Hierarchy 창 상단의 Create 버튼 또는 Hierarchy 창을 오른쪽 클릭하고 UI > Button을 클릭하여 Button을 Scene에 만듭니다.
작성한 Button은 임의의 위치에 배치합니다.

작성한 Button을 선택 상태로 하고 Inspector 윈도우에서 Button의 「On Click()」 하단의 「+」를 클릭합니다.
추가한 목록으로 Hirarchy의 모델의 GameObject를 드래그 앤 드롭하고 오른쪽의 드롭다운 메뉴에서 MotionPlayer / PlayMotion()을 선택합니다.

마지막으로 인수로 재생할 AnimationClip을 설정합니다.

이상으로 설정이 완료됩니다. 이 상태에서 실행하면 Game 뷰의 버튼을 클릭했을 때 모션이 재생됩니다.

이 기사가 도움이 되었나요?
아니요
이 기사에 관한 의견 및 요청사항을 보내 주시기 바랍니다.