UNITY

[UNITY] Animation / Animator Controller 애니메이션 사용하기

멍정 2022. 4. 4. 21:15

우선 첫번째 (당연하겠지만)  Animation과 Animator Controller는 다르다

직관적으로 보면 Animation은 내가 원하는 움직임을 담고 있고

Animator Controller는 Animation들을 관리한다고 볼 수 있다.

ex) 걷는 움직임 Animation / 걷고 뛰는 Animation을 모아놓은 Animator Controller 

 

Animation / Animator Controller
Animation

Window - Animation - Animation을 통해 애니메이션 창을 열 수 있다. 창을 통해서 애니메이션을 조절할 수 있다.

Animator

Window - Animation - Animator를 통해 애니메이터 창을 열 수 있다.

-

기본적으로 Entry부터 실행되고 Entry에 직접적으로 연결된 State(네모박스)는 주황색으로 표시된다.

State는 빈공간에 우클릭하여 만들 수 있다.

Create State

State를 우클릭하면 Transition(화살표)을 만들 수 있고 Transition을 State에 연결한 후 조건을 걸어 진행할 수 있다. 

Make Transition

Transition을 만들었으면 Transition을 눌러서 세팅할 수 있다.

Has Exit Time을 체크하면 애니메이션 실행 도중에 조건이 바뀌더라도 실행하던 애니메이션을 끝까지 실행한다.

 

 

Conditions에 있는 변수를 통해 진행여부를 결정할 수 있다.

bool형식의 character_nearby 변수값이 true라면 애니메이션을 진행한다.

Transition

Conditions에 있는 변수 character_nearby는 Parameters에서 만들어줄 수 있다.

+버튼을 눌러서 만들면 된다~

Parameters

여기까지 연결했으면 inspector창에서 Animator를 추가해주고 아까 만들어준 Animator Controller를 넣어준다. 

Animator Component

이제 스크립트를 통해 아까 만들어준 character_nearby 변수 값을 조정해주면 애니메이션이 성공적으로 작동한다.

 

문이 무언가와 충돌 할 경우 문이 열리고 충돌이 끝나면 닫힌다.

public class Door : MonoBehaviour
{
    private Animator animator;
    // Start is called before the first frame update

    private void Awake()
    {
        animator = GetComponent<Animator>();
    }

    // Update is called once per frame
    void Update()
    {
        
    }

    private void OnCollisionEnter(Collision collision)
    {
        animator.SetBool("character_nearby", true); //변수 값 true
    }
    private void OnCollisionExit(Collision collision)
    {
        animator.SetBool("character_nearby", false); //변수 값 false
    }
}

문 열기 끝!

 

유튜브 참고 https://www.youtube.com/watch?v=hOrH3aUSn64

사용한 에셋 https://assetstore.unity.com/packages/3d/environments/sci-fi/sci-fi-styled-modular-pack-82913