유니티 엔진에서 여러 스프라이트를 연속적으로 재생할 수 있는 애니메이션을 쉽게 만들 수 있다.
애니메이션 생성
먼저 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 컴포넌트를 추가하고 프리팹으로 만들어 편하게 사용할 수 있다.
'Unity Engine > 기초 테크닉' 카테고리의 다른 글
[Unity] 오브젝트 클릭과 터치 감지 구현하기 (1) | 2024.11.18 |
---|---|
[Unity] 2D 오브젝트가 이동 중에 걸리는 현상 - Ghost Vertices (0) | 2024.11.10 |
[Unity] 스프라이트 시트로 랜덤 파티클 만들기 (2) | 2024.11.07 |
[Unity] 유니티 오브젝트의 null 확인 (0) | 2023.09.03 |
유니티 Raycast로 3D 오브젝트 클릭과 드래그 (2) | 2022.09.20 |