Today I Learned - Day 46 [Animation 파고들기]
TIL 초창기에 Animator Override Controller를 다룬 적이 있다.
https://lsu0503.tistory.com/72
Today I Learned - Day 19 [Animator Override Controller]
유니티에서 애니메이션 작업은 기본적으로 일단 적용한 뒤, 자신이 원하는 대로 깎는 작업이다.다르게 말하면 품이 많이 드는 작업으로, 애니메이션 작업의 거의 대부분은 구상이나 개발 보다
lsu0503.tistory.com
다만, 여기서는 Animator Override Controller만 다뤘지, Animation에 대해서는 그다지 다루지 않았었다.
그러니 한번 다뤄볼까 한다.
애니메이션은 '언제 어떤 수치가 얼마만큼의 시간에 걸쳐서 얼만큼 변화하였는가' 즉, '변화점의 기록'이라고 말할 수 있다.
그것을 이용해서 다양한 변화점을 구사하고, 조합하고, 표현할 수가 있다는 것이 가장 큰 특징이자 용도라고 할 수 있다.
하지만, 애니메이션은 단순히 변화점을 기록하는 것 만 할 수 있는 것이 아니다.
그렇다면 본문에서는 '애니메이션이 '변화점'을 추구하는 또 다른 요소들'을 알아보자.
목차
- 애니메이션 이벤트
- 애니메이션 커브스
[키 프레임 기능도 있기는 하나, 이는 그냥 중간 지점을 하나 추가하는 개념이다.]
애니메이션 이벤트
애니메이션의 특점 지정에서 '함수'를 작동시킬 수 있는 기능.
이를 이용해서 특정 타이밍에 공격에 해당하는 Collider를 활성화 시켜서 공격 판정을 만든다거나, 땅에 닿는 타이밍에 파티클을 켜서 충격파 표현을 넣는다거나, 탄환 발사 컴포넌트를 활성화 하여 탄환 발사 애니메이션 도중에 탄환을 쏠 수도 있다.
정말로 다양한 방면에서 사용 가능한 기능으로, 이것을 활용하는 경우와 아닌 경우의 차이는 상당히 큰 편.
특히나 애니메이션의 키 프레임에 맞춰서 함수를 사용하기가 상당히 편하기 때문에, 이래저래 익혀두면 편한 편이다.
그럼, 사용법을 알아보자.
사용법은 아주 간단하다.
함수를 발동시킬 시점으로 커서를 옮긴 뒤에, 사진에 보이는 Add event 버튼을 누르기만 하면 된다.
그러면 현재 커서의 위치에 이벤트 표시(우측 가로열 최상단의 잛은 막대.]가 추가되는데,
여기에 원하는 함수를 할당하면 끝.
같은 애니메이션에 복수 이벤트를 쓸 수도 있고, 반대로 같은 시점에 복수의 이벤트를 부여하는 것도 가능하다.
단, 애니메이션이 있는 인스턴스에 함수를 지닌 클래스가 컴포넌트로 같이 붙어있어야 한다.
따로 함수를 지닌 클래스를 지정하는 파트가 없어서, 이는 반드시 지켜져야 하는 사항.
애니메이션 커브스
적당한 기점으로 중점에서 살짝 떨어뜨린 공을 Y축을 기준으로 회전하도록 구성해 보자.
시작 각도는 0, 종료 각도는 360으로 설정한다.
그리고 한번 테스트 해 보자.
그럼 등속운동이 아니라 시작과 끝에 움찔움찔히는 가속도를 그리는 공을 볼 수 있을 것이다.
애니메이션에는 변화점과 변화점 사이를 자동으로 보정하는 기능이 있다.
하지만, 상술했듯이 기본적으로 선형이 아니라, 가속도를 그리는 듯한 곡선형으로 보정이 된다.
하지만, 방금 전에 서술했던 원운동은 어지간하면 선형으로 구성해야 자연스러울 터다.
그런 경우에 쓸 수 있는 방법은 무엇일까.
얼마 전 까지의 나였다면 '스크립트로 돌릴 수 밖에 없지 않나?'라고 발언했을 것이다.
하지만, 지금 와서는 '굳이 왜 그렇게?'라는 생각이 들 수 밖에 없을 거 같다.
본론으로 돌아가겠다.
애니메이션에는 변화 곡선을 편집할 수 있는 기능이 있다.
이를 이용해서 시작 반동와 끝 반동을 그려낼 수도 있고, 아예 역회전과 정회전을 반복하는 형태도 그릴 수 있고, 아예 한 순간에 변화가 일어나도록 편집할 수도 있다.
그럼, 그 방법을 알아보자.
이 역시나 방법은 간단하다. 그냥 애니메이션 도구 화면 좌측 창에서 아래에 있는 Curves를 누르면 된다.
이후에 우측의 그래프에서 변화점을 찍어가면서 조절하면 끝.
기본적으로 양쪽 끝에 변화점이 있고, 원하는 위치에서 더블클릭을 하여 변화점을 추가로 배치할 수도 있다.
변화점을 누르면 나오는 바의 끝을 잡고 돌리면 해당 좌표의 각도가 달라지고, 해당 바의 길이를 조절하여 그 위치 기울기의 영향력(얼마나 오래 가는 가)을 조정할 수 있다.
하지만, 형태를 보면 알겠지만, 구체적인 세로축 수치를 알기가 제법 까다롭다. 각 축 간의 축적도 사용자가 조절할 수 있는 구조다 보니, '이게 눈에 보이기에는 이러한데 실제로는 어떠한가'를 파악하기가 힘든 편이다.
때문에, 변화점과 변화점 사이에 '역주행 구간'은 가능하면 지양하도록 하자. 잘못하면 회전 반동을 의도했다가 2연속 트리플 악셀을 뛰고 있는 회전체를 보게 될 수도 있다.
이외에도 변화점과 변화점을 선택하면 그 두 변화점 사이가 영역처리 되는데, 그 상태에서 우클릭으로 메뉴창을 열어서 Unity 상에서 미리 정의된 형태로 구성하는 것도 가능하다.