Unity

Unity Sprite Animation 만드는 방법!

ITSkeleton 2016. 6. 14. 14:52
728x90
반응형

안녕하세요? ITSkeleton입니다.

오늘은 Sprite Animation을 만드는 방법에 대하여 알려드리겠습니다.

애니메이션으로 만드는 방법은 크게 2가지로 나눌 수 있는데요.

1. 코드로 작성하는 방법.

2. 스프라이트 시트를 활용하는 방법.

으로 나눌수 있습니다.

먼저, 

1. 코드로 작성하는 방법을 알아보도록 하겠습니다.

코드로 작성하는 방법은 스프라이트 시트로 만들지 않은 이미지 파일들을 굳이 스프라이트 시트로 만들지 않고 (메모리를 생각하지 않은 방법) 하나씩 전부 불러와서 동작하게 하는 방법입니다.

하드코딩 할때 어울리겠네요.

(1) 먼저 이미지 파일들이 필요하겠지요? 저는 제가 가지고있는 임의의 파일들을 이용해 보겠습니다.

이런식으로 분할되어있는 이미지 파일들을 Sprite형태의 파일들로 바꾸어주면 저렇게 됩니다.

이미지 파일을 Sprite형대로 바꾸는 방법은 이미지를 클릭해보시면 Inspetor에 이런 화면이 뜹니다


(2) Texture을 Sprite로 바꿔주시면 처음 이미지와 같이 화살표가 생길텐데요 저안에 Sprite이미지가 담겨 있습니다.

그다음 코드를 작성해 볼까요.

(3) 코드는


public class Randstart : MonoBehaviour {

    public Sprite[] a;                            //스프라이트를 받아옵니다.

    private SpriteRenderer myRenderer;   //스프라이트를 렌더하기위해 호출합니다.

    float time = 0;                              //시간을 위해 사용합니다.

    int count = 0;                               //몇개를했는지 알아봅니다.

    // Use this for initialization

    void Start () {

}

// Update is called once per frame

void Update () {

        time += Time.deltaTime;             //지나는 시간을 계속하여 저장합니다/

        if (count > 300) return;               //count가 이미지의 최대 갯수 만큼이 되었을때 return


        else if (time >= 0.01f)                //시간이 0.01초가 지났을경우

        {

            Debug.Log(count);

            myRenderer = gameObject.GetComponent<SpriteRenderer>(); //렌더 적용할 객체

            myRenderer.sprite = a[count];                                            //렌더를 적용시킴

            time = 0;                //시간을 다시 0초로

            count++;                //증가로 다음 이미지 적용 준비

        }

   

}

}

이런식으로 작성해 주시면 public 으로 받아온 Sprite이미지를 순차적으로 적용하면서 애니메이션처럼 작용하겠지요. 각각을 Move, Run 등등으로 메소드를 작성하신뒤 필요한때에 불러와서 적용하시면 됩니다~ (public에 객체들을 넣는방법은 제 블로그 다른 포스팅에 보면 나와있습니다) 

정말 메모리적으로 비효율적이지요? 네, 어딜봐도 비효율적인 방법입니다.

(모든 것을  초반에 불러와서 적용하기때문에 씬이 처음에 느리게 시작됩니다.)


2. 스프라이트 시트를 활용하여 만드는 방법입니다.

Unity 5.3버전에서는 cell 로 크기,갯수에 비례하여 시트를 자를수있습니다. 

하지만 저는 4후반대~5초반대 버전을 이용하기 때문에 그에 맞는 내용을 포스팅합니다.

먼저 스프라이트 시트를 다운 받으시거나 구하셔야 합니다. 

직접 포토샵으로 작업하거나 다른 소프르웨어를 이용하여 만드는 방법도 있습니다.


초반부는 위에와 비슷합니다. Texture을 Sprite로 변형시켜줍니다.

Single이 보이시나요 저걸 Multiple로 바꾸어 줍니다.

Generate Mip Maps는 끄도록하죠...

그후 Sprite Editor를 클릭하면 에디터 창이 뜹니다.

그후 왼쪽 상단에 보면 Slice가 있습니다. 클릭해주시면 

Type이 보이시죠 클릭해보시면 Automatic과 Grid가 보이실겁니다.

Automatic은 자동으로 잘라주는 기능이고

Grid는 사용자가 크기를 지정해서 잘라주는 기능입니다.

제대로 만들어진 스프라이트 시트라면 Automatic을 누르면 자동으로 그림만 추출해서 사각형형태로 잘라서 줍니다.

이렇게해서 Slice를 눌러주면 그림이 잘린형태로 저장이 됩니다.

이런식으로 잘리게 됩니다. 이제 애니메이션을 만들어야 겠지요?

맨상위 Sprite를 선택한후 Hierarchy에 끌어와서 놓으면 자동으로 스프라이트 객체가 생성이 됩니다.

스프라이트 객체를 선택후 Ctrl + 6번을 눌러주시면 Animation 창이 뜹니다.

Add Property를 선택해주시고 새로운 애니메이션을 만들어줍니다. 

이 화면까지 따라오셧나요? 그럼 아까 만들어둔 스프라이트 시트로 이동합니다.

Shift를 누르고 생성된 스프라이트를 전부 선택해서 드래그&드롭 해줍니다.

(Shift를 누른상태여야 합니다.)

이렇게 들어가게 되는데요

Sample로 시간을 조절할수있습니다. 물론 각각을 클릭해서 움직여 줄수도 있구요.

한번 실행해서 확인해보시길 바랍니다.

이렇게 하시면 애니메이션이 하나 완성됩니다.

Animator로 구동을 제어할수 있구요.

Animator를 사용하는 방법에 대해서는 다음에 포스팅 하도록하겠습니다.

감사합니다 ~-~

 

유튜브 영상

https://www.youtube.com/channel/UCuhamVaQCtATPaEdYX-kM5Q

728x90
반응형