상세 컨텐츠

본문 제목

유니티 애니메이터 레이어(Animator layer) 껐다 키기

유니티/기능

by MJ_119 2024. 10. 8. 17:40

본문

애니메이터 레이어(animator Layer)들을 보면 여러개의 레이어를 설정할 수 있는데

 

- 무기에 맞게 애니메이션을 설정해야 할 때 사용함.

 

이중에 SetLayerWeight( m , x )를 사용해서 레이어를 온/오프 할수있음

 

예를들어 아래 경우를 보면 Base Layer를 포함해 총 3개의 레이어가있는데 배열이나 리스트같이 맨위부터 0, 1, 2 이렇게 레이어 인덱스가 설정. 

 

 

    void SwitchAnimationLayer(int layerIndex)
    {
        for(int i = 1; i < animator.layerCount; i++)
        {
            animator.SetLayerWeight(i, 0);
        }

        animator.SetLayerWeight(layerIndex, 1);
    }

 

 

void Update()
    {
        if (Input.GetKeyDown(KeyCode.Alpha1))
        {
            SwitchAnimationLayer(1);
            SwitchOn(pistol);
        }
        if (Input.GetKeyDown(KeyCode.Alpha2))
        {
            SwitchAnimationLayer(1);
            SwitchOn(revolver);
        }
        if (Input.GetKeyDown(KeyCode.Alpha3))
        {
            SwitchAnimationLayer(1);
            SwitchOn(autoRifle);
        }
        if (Input.GetKeyDown(KeyCode.Alpha4))
        {
            SwitchAnimationLayer(2);
            SwitchOn(shotgun);
        }
        if (Input.GetKeyDown(KeyCode.Alpha5))
        {
            SwitchAnimationLayer(1);
            SwitchOn(rifle);
        }
    }

 

 

 

- 무기의 오른손 자식으로 무기들을 넣어놓고, 왼손은 IK를 적용시켜서 애니메이션에 따라 오른손이 움직일때, 자동으로 오른손이 총의 방아쇠쪽으로 가고 왼손은 IK 지정한대로 총을 받치거나 잡음.

관련글 더보기