Notice
Recent Posts
Recent Comments
Link
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
Archives
Today
Total
관리 메뉴

시작은 0부터

12. Prefab Veriant, Animator Override Controller, SetTrigger 본문

Unity 학습일지

12. Prefab Veriant, Animator Override Controller, SetTrigger

0base 2022. 8. 24. 16:39

Prefab Veriant

: 프리팹을 상속받는 프리팹 생성. A라는 프리팹의 베리언트 B를 생성하면 B라는 프리팹(베리언트)가 생성되고, 이 프리팹은 부모 격인 A 프리팹이 바뀌면 같이 바뀌지만, B자식 격인 자신(B) 프리팹을 바꿔도 A의 프리팹은 바뀌지 않는다. 이 원리를 이용해  A라는 프리팹의 베리언트를 여러개 생성하면 각각의 베리언트들은 독립적으로 수정되고 서로 영향을 미치지 않지만 부모인 A 프리팹을 수정하면 모두 영향을 받게 된다.

 

Animator Override Controller

: 기존의 애니메이터 컨트롤러를 덮어쓰는 컨트롤러.

Controller 안에 기존의 애니메이터 컨트롤러를 넣으면, 해당 컨트롤러 내부에 설정되어있는 애니메이션들이 Original 칸에 나온다. Override 칸에 덮어쓸 애니메이션을 넣으면 해당 애니메이션으로 바뀌고 넣지 않으면 기존의 애니메이션을 사용한다.

 

SetBool 과 SetTrigger

애니메이션 상태 변화를 줄 때는 보통 bool 값 또는 trigger를 사용한다. bool 값은 참/거짓으로 상태변화를 주기 때문에 상호 변화가 가능한 애니메이션에 주로 사용한다.(기본 > 걷기, 걷기 < 기본 등)

trigger는 발동되면 한번 실행되고 자동으로 종료된다. 트리거는 AnyState(어떤 상태에서도 조건이 맞으면 바로 발동)에서 사용하는 상태변화를 줄 때 사용된다. 예를 들어 '죽음' 상태를 동작할 때는 걷다가도, 서있다가도, 공격하다가도 죽을 수 있기 때문에 AnyState에 주로 연결한다. 이때, 이 죽음 발동 조건을 bool 값으로 하면 애니메이션이 멈추는 기현상이 발생한다. 기존 상태변화 실행과 AnyState의 상태변화 실행 조건이 둘 다 bool 일 경우 실행순서가 동일하여 충돌하는게 아닐까?

트리거는 발동되면 무조건 실행하기 때문에 상태변화보다 우선순위에 있어서 현재 bool값의 여부에 관계없이 일단 발동되고 보기 때문에 정상적으로 작동하는 것으로 추측해본다.

 

Entry(애니메이션 실행) 이후 바로 기본 동작(idle)이 실행되고 조건에 따라 move(bool) 값이 참/거짓으로 바뀌어 이동하고,  idle, walk에 관계없이 attack 트리거가 발동되면 공격 동작(attack)을 실행하고 기본동작으로 돌아간다.