Unity Mecanim Keypress에서 애니메이션을 재생하는 방법

Mecanim는 개발자에게 고급 애니메이션 제어 및 기능이 풍부한 편집기를 제공하는 Unity용 상태 기반 도구입니다.

Mecanim의 주요 기능은 애니메이션 블렌딩과 애니메이션 리타겟팅입니다.

애니메이션 블렌딩은 애니메이션 사이를 부드럽게 전환하는 자동 프로세스입니다.

애니메이션 리타겟팅은 기존 애니메이션의 용도를 변경하여 여러 캐릭터 리그 간에 작동하도록 하는 프로세스로, 각 새 캐릭터에 대해 새 애니메이션을 만들 필요가 없습니다.

이 튜토리얼에서는 Mecanim을 사용하여 큐브에 애니메이션을 적용하고 Keypress에서 애니메이션을 재생하는 방법을 보여 드리겠습니다.

단계

Unity에서 큐브에 애니메이션을 적용하려면 아래 단계를 따르세요.

  • 새 큐브 만들기(GameObject -> 3D 개체 -> 큐브)

  • Cube를 선택한 후 Animation 창을 엽니다. (Window -> Animation -> Animation)
  • 애니메이션 창에서 "Create"를 클릭하면 새 애니메이션인 새 애니메이터 컨트롤러가 생성되고 애니메이터 구성 요소가 큐브에 연결됩니다.
  • 새 애니메이션 이름 지정 "SpinAnimation"

  • 애니메이션 창에서 AddProperty -> Transform -> Rotation을 클릭하세요.
  • 이 애니메이션에는 시작과 종료라는 2개의 프레임이 있습니다.
  • 첫 번째 프레임에서는 회전을 (0, 0, 0)으로 설정합니다.

  • 마지막 프레임에서는 회전을 (0, 360, 0)으로 설정했습니다.

애니메이션이 준비되었습니다.

팁: 더 많은 애니메이션을 만들려면 애니메이션 창에서 애니메이션 이름을 클릭한 다음 "Create new Clip..."을 클릭하세요.

Mecanim Animator Controller를 설정하려면 아래 단계를 따르십시오.

  • 애니메이션으로 생성된 애니메이터 컨트롤러 자산을 두 번 클릭합니다.

  • 다음과 같이 "Animator"라는 제목의 새 창이 나타납니다.

  • "Entry"에서 "SpinAnimation"을 가리키는 화살표가 있는 것을 볼 수 있습니다. 이는 장면이 시작되자마자 애니메이션이 재생된다는 것을 의미하지만 이는 우리가 원하는 것이 아니며 키를 누를 때만 애니메이션을 재생하고 싶습니다.

Mecanim에는 진입 애니메이션이 필요하므로 우리가 할 수 있는 일은 새로운 빈 상태를 생성하고 이를 진입으로 만드는 것입니다:

  • Animator 창을 마우스 오른쪽 버튼으로 클릭 -> 상태 만들기 -> 비어 있음:

  • 항목 상태 선택 -> 마우스 오른쪽 버튼 클릭 -> StateMachine 기본 상태 설정을 선택한 다음 "New State"을 가리킵니다.

마지막으로 해야 할 일은 SpinAnimation으로 전환하는 것입니다. 그러나 특정 조건이 충족되면 전환을 수행하려고 합니다. 이때 매개변수 탭이 나타납니다.

  • Animator 창에서 매개변수 탭을 클릭한 다음 (+) 기호를 클릭합니다.

여러 가지 유형을 사용할 수 있지만 지금은 Trigger를 선택하겠습니다. 이는 bool과 유사하지만 bool과 달리 애니메이션이 완료되면 자동으로 false로 설정되어 일회성 애니메이션에 유용합니다.:

  • 매개변수 이름 지정 "spinTrigger"

  • 마지막으로 "Any State" 선택 -> 마우스 오른쪽 버튼 클릭 -> 전환 만들기를 선택한 다음 SpinAnimation을 가리킵니다.

  • 전환 화살표를 클릭하고 Inspector View의 Conditions에서 (+)를 클릭하고 spinTrigger 매개변수가 선택되어 있는지 확인하세요.

  • 기본적으로 Unity으로 생성된 애니메이션에는 루프가 활성화되어 있지만 애니메이션을 한 번만 재생하고 싶기 때문에 프로젝트 보기에서 애니메이션 클립을 선택한 다음 루프 시간 확인란을 선택 취소하면 됩니다.

스크립트에서 Mecanim 매개변수를 제어하려면 특수 기능을 사용해야 합니다. 아래 코드를 확인하세요.

  • 새 스크립트를 만들고 이름을 "AnimationTest"으로 지정하고 모든 내용을 제거한 다음 그 안에 아래 코드를 붙여넣습니다.

AnimationTest.cs

using UnityEngine;

public class AnimationTest : MonoBehaviour
{

    Animator animator;

    // Start is called before the first frame update
    void Start()
    {
        //Get Animator component
        animator = GetComponent<Animator>();
    }

    // Update is called once per frame
    void Update()
    {
        //Play spin animation on key press
        if (Input.GetKeyDown(KeyCode.Q))
        {
            animator.SetTrigger("spinTrigger");
        }
    }
}
  • Animator 구성 요소를 사용하여 Cube에 AnimationTest.cs 스크립트를 연결합니다.

이제 테스트해보자:

Sharp Coder 비디오 플레이어

모든 것이 예상대로 작동하며 Q를 누르면 애니메이션이 재생됩니다.