본문 바로가기

Unity Engine/기초 테크닉

[Unity] 스프라이트 뭉치로 애니메이션 만들기

728x90
728x90

유니티 엔진에서 여러 스프라이트를 연속적으로 재생할 수 있는 애니메이션을 쉽게 만들 수 있다.

애니메이션 생성

먼저 Sprite 프레임들을 준비한다.

 

 

그런 다음 애니메이션을 만들 스프라이트를 모두 선택한 후 유니티 에디터의 Hierachy 창으로 드래그 한다.

 

 

그러면 아래처럼 애니메이션 파일을 생성할 수 있는데 적당한 위치에 생성하도록 한다.

 

 

그러면 애니메이터와 애니메이션 클립, 그리고 씬에 오브젝트가 생성된 것을 볼 수 있다.

 

 

이벤트 추가와 제어 스크립트 작성

여기서 특정 키 프레임에 이벤트를 발생시키는 애니메이션 이벤트를 추가할 수 있다.

 

 

추가하고자 하는 프레임에 우클릭을 하면 Add Animation Event를 생성할 수 있다. 스크린샷에서는 이미 이벤트를 하나 추가해서 이벤트가 하나 띄워져 있음을 참고하자.

 

 

그러면 실행할 함수의 이름을 지정할 수 있는데 이 함수는 Object에 있는 스크립트에서 작성되어야 한다.

 

이벤트에 지정되는 함수는 반드시 void 형이어야 하며 float, int, 또는 string 타입의 매개변수 하나를 가지도록 할 수 있다. 그 값은 위 스크린샷과 같이 인스펙터에서 설정할 수 있다.

 

OnFinish 메서드를 구현할 겸 스프라이트 애니메이션을 코드로 제어하는 SpriteAnimation.cs 클래스를 작성하자.

 

using UnityEngine;

public class SpriteAnimation : MonoBehaviour
{
    SpriteRenderer m_SpriteRenderer;
    Animator m_Animator;

    public void Init()
    {
        m_Animator = GetComponent<Animator>();
        m_SpriteRenderer = GetComponent<SpriteRenderer>();
    }

    public void Play()
    {
        gameObject.SetActive(true);
        m_Animator.Play("Action"); // 애니메이션 클립 이름으로 설정
    }

    void OnFinish()
    {
        gameObject.SetActive(false);
    }
}

 

이제 인스펙터에서 Object에 SpriteAnimation 스크립트를 연결할 수 있다.

 

 

이제 연동해주면 이벤트가 발생할 때 SpriteAnimation의 OnFinish()를 호출하게 된다.

 

 

그러면 씬에서 생성된 오브젝트에 아까 작성한 SpriteAnimation 컴포넌트를 추가하고 프리팹으로 만들어 편하게 사용할 수 있다.

728x90
728x90