유니티 게임오브젝트에 애니메이션을 적용하기 위해서는 컴포넌트로  Animation을 추가해주면 된다.


[컴포넌트를 추가하는 방법]


1. 컴포넌트를 붙이길 원하는 게임오브젝트를 선택한다.


2. Add Component를 누른뒤 Animation을 추가한다.


3. Animation 컴포넌트가 추가되었다. 물론, 아무것도 넣지 않았기때문에 None 즉 아무 애니메이션도 존재하지 않는다.


4. death라는 애니메이션을 Animation에다가 집어넣었다. 이 경우 애니메이션 동작을 한 개(death)만 보여줄 경우이다.


5. 한 게임오브젝트에 여러 애니메이션을 재생하려면, Animations에다가 여러개의 애니메이션 파일을 집어넣는다.



그렇다면 Animations에 담긴 애니메이션 파일은 어떻게 사용할까?


일단, 코드에서 애니메이션을 실행하는 코드는 anim.Play("");이다.


그럼, Animations는 배열이므로 string[]배열을 사용해야 할 것이다.


하지만 배열은 선언할 때 반드시 크기를 명시해줘야 한다.


즉, 배열에 저장할 데이터의 크기를 확실히 모르거나 데이터가 도중에 추가될 가능성이 있다면 배열을 사용하면 안 된다.


List를 사용한다.

 


    List<string> animArray;
    Animation anim;     
int index = 0;

void Start()
{
        anim = gameObject.GetComponent<Animation>();
        animArray = new List<string>();
            AnimationArray();

            anim.Play(animArray[randomNum]);
            anim.wrapMode = WrapMode.Once;
}

public void AnimationArray()
{
        foreach (AnimationState state in anim)
{
            animArray.Add(state.name);          
           index++;
}
        randomNum = Random.Range(0,index);
}



이렇게하면 된다.



중요한 함수는 AnimationArray()함수이다.


여기서, foreach문을 사용하여 AnimationState형으로 꺼내온 뒤, list에 저장한다(Add)


나는 항목들 중 랜덤으로 1회 플레이하기 위해서 Random.Range를 사용했고,


Play안에 난수를 집어넣었다. 이렇게 함으로써 랜덤한 애니메이션이 1회 플레이 될 것이다.



이상으로 애니메이션(Animation) 컴포넌트 안에 Animations 배열을 가져오는 방법에 대해 알아보았다.



Posted by sungho88
,