2. 애니메이션(Animation) 이란?
일반적으로 우리가 알고 있는 애니메이션은 캐릭터나 사물이 움직이는 것을 지칭합니다.
하지만 애니메이션의 정확한 개념은 움직일 객체의 Vertex 들이 1프레임 마다 어디로 움직일지에 대한 동선 행렬이죠.
일반 사용자가 수동으로 Vertex나 Polygon을 조작하는 행위는 힘드므로 대체적으로 애니메이션을 쉽게 할 수 있는
3D MAX, Blender, Maya 같은 3D툴 인터페이스를 이용해 조작합니다.
( 1 / 8 )
3. 좀 더 편한 방식
애니메이션을 좀 더 편하게 만드는 방법은 다양하다. 위 말 대로 3D툴 인터페이스를 통해 수동으로 조작하는 방법과
실제로 사람이나 물체의 움직임을 어떠한 장비로 캡쳐하여 3D상에서 캡쳐하는 방식도 존재합니다.
대표적으로 적외선 캡쳐 방식인 ‘IR Sensor’와 하위 호환 버전인 ‘Kinect’ 모션 캡쳐 장비가 있습니다.
그 외에도 여러 캡쳐 방식이 존재합니다.
( 2 / 8 )
# IR Sensor # Kinetic
4. Legacy Animation
레거시 애니메이션은 오래전부터 활용해온 전통방식의 애니메이션을 뜻하며 유니티에서의 애니메이션 기법 중 하나입니다.
움직일 대상 모델의 ‘Animation Component‘ 가 부착되고 애니메이션 파일은 별도의 스크립트로 손수 불러옵니다.
코드 몇 줄로 애니메이션 제어가 가능하단 것이죠. 특징은 애니메이션 이름에 ‘@’ 표시로 구분을 해줘야 가능합니다.
또한 애니메이션을 창조하려면 3D아티스트 역량에 달려 있습니다.
( 3 / 8 )
5. 애니메이션 활용 #1
스크립트를 새로 만들어 위 코드와 같이 적어봅시다.
캐릭터에 붙어 있는 ‘Animation‘ 컴포넌트를 사용하기 위해 초기화문에서 ‘GetComponent’로 할당받고
키보드 번호를 누르면 ‘Play’라는 함수로 실행되게끔 되어있습니다.
실제로 해보면 번호가 눌리는 대로 애니메이션이 실행되는 모습을 보실 수 있습니다.
( 4 / 8 )
# 실행결과
6. 애니메이션 활용 #2
방금 만들었던 스크립트를 보강해 추가 코드를 적어봅시다. ‘Play’라는 함수 대신 ‘CrossFade’로 대체해줍니다.
원리는 ‘A’의 애니메이션과 ‘B’의 애니메이션의 Vertex를 혼합(Blending)하고 보간(Lerp)하여 두 동작이 섞이면서 전환되는
한 마디로 부드럽게 애니메이션이 바뀌는 테크닉입니다.
이는 유니티 자체적으로 제공되며, ‘Play’ 대신 ‘CrossFade’를 서술하면 가능합니다.
( 5 / 8 )
# CrossFade # 부드럽게 변화되는 애니메이션
7. 애니메이션 활용 #3
마지막으로 애니메이션을 이용한 캐릭터 움직임을 구현해 보겠습니다. 이전 스크립트를 위와 같은 코드로 전부 수정해줍니다.
우리가 지금까지 배웠던 객체의 이동 테크닉과 애니메이션을 혼합하여 3인칭 움직임을 구현합니다.
캐릭터 뒤에 카메라를 자식으로 넣어 움직일 때 마다 따라오게끔 구현하면 훨씬 보기 좋아집니다.
( 6 / 8 )
# 3인칭 캐릭터 이동 구현
8. 보너스 #1
마지막으로 복습 차원에서 트리거를 밟으면 저 멀리 노란 박스 위로 순간이동 하는 기능을 만들어보겠습니다.
우선 문을 만들고 문 입구에 Cube를 하나 더 만든 뒤 ‘Mesh Renderer’ 체크버튼을 풀어 화면에서 보이지 않게끔 합니다.
그리고 충돌을 위해 캐릭터에 ‘Rigidbody Component’와 캡슐모양 ‘Collider’를 만들어 계층구조로 넣어버립니다.
이후 순간이동을 위해 이동 될 빈 오브젝트도 하나 만듭시다.
( 7 / 8 )
Teleport
9. 보너스 #2
세팅이 준비되었다면 스크립트를 새로 만들어 위와 같이 작성합니다.
내용은 간단합니다. 충돌체의 태그가 있을 경우 충돌체의 부모를 이동시키는 개념입니다.
코드 내용을 잘 보시면 ‘parent’를 확인하실 수 있습니다. 그러면 부모와 자식들이 한꺼번에 이동되는 셈이죠.
이상 복습차원에서 공부한 순간이동과 애니메이션 기초에 대해서 알아보았습니다.
( 8 / 8 )