본문 바로가기

unity

[201106] 유니티 간단한 애니메이션 만들기

.

 

진행중인 졸업 프로젝트에서 간단한 애니메이션을 구현해야 하는 일이 생겼다. 이전에 만든 게 있었는데 에셋 스토어에서 받은 에셋을 정리하다가 소스가 꼬여서 새로 만들어야 하는 상황이 발생했다. 그런데 옛날에 어떻게 만들었는지 잘 기억이 나지 않아서 블로그에 정리하면서 기억을 되새기고 나중에도 편하게 만들 수 있게 하려고 한다. 

 

.

 

Animation Clip을 사용해서 하나의 애니메이션을 만들 수 있다. 이러한 Animation Clip은 Animation이나 Animator Controller를 통해서 사용할 수 있다. 여기서는 직접 간단한 Animation Clip을 만들고 Animator를 통해 적용해 볼 것이다. 내가 하려고 하는건 낫을 들고있을 때 위아래로 흔들리게 하고, 버튼을 눌렀을 때 수확을 애니메이션을 넣는 것이다.

 

 먼저, Animation 창에서 Animation Clip을 만들 수 있다. 

위 이미지는 빈 Animation 창이다. Hierarchy에서 애니메이션 설정을 원하는 오브젝트를 선택하고 Create 버튼을 누르면 Animation Clip을 생성할 수 있다. 

 

또한, 드롭다운 버튼을 통해서 해당 오브젝트에 생성된 Animation Clip을 한 번에 관리할 수 있다. 

 

1. 기본 상태의 애니메이션(위, 아래로 움직이기) 생성 

Add Property에서 Transform> Position을 선택한다. 

 

타임라인을 통해서 애니메이션을 쉽게 생성할 수 있다. 생성 후 재생 버튼을 통해 시뮬레이션도 가능하다. 

나는 y좌표 값을 조정해서 오브젝트가 위, 아래로 움직이는 것처럼 보이게 만들었다. 

 

2. 수확하는 상태의 애니메이션 생성

 

rotate 값을 조정해서 오브젝트를 휘두르는 것처럼 보이게 했다. 

 

3. Animator Controller 생성

 

Animator 상태 머신을 통해서 쉽게 애니메이션의 상태를 조정할 수 있다. 

기본 상태인 SickleIdleAnim을 마우스 오른쪽 버튼을 통해 디폴트로 설정하고, 수확 상태인 SickleHarvestAnim 애니메이션과 transition을 연결하였다. 프로그램에서는 기본적으로 오브젝트가 idle 상태에 있다가, o버튼을 누르면 harvest를 한 번 실행하고 다시 idle로 돌아간다. 

 

구현을 위해 parameters에서 trigger형 변수인 isOBtnPushed를 생성하였다. 

 

Animator 창에서 SickleIdleAmin에서 SickleHarvestAnim으로 가는 transition을 선택하면 Inspector 창을 확인할 수 있다. 여기서 Conditions에 방금 생성한 isOBtnPushed를 추가한다. 

 

4. 소스코드 수정

다음으로는 실제로 O버튼을 눌렀을 때 Trigger의 값이 바뀌도록 구현해야 한다. 

이건 간단하게 SetTrigger() 메소드를 통해 구현할 수 있다. 

 

 

참고로 씬에 있는 Animator는 위와 같이 연결해주었다. waterCanAnim, sickleAnim은 Animator 형의 변수다. 

 

 

정리를 통해 절차를 더 잘 이해할 수 있었고, 다음에 같은 구현이 필요할 때도 쉽게 할 수 있을 것 같다. 맨 처음에 할 때는 쉬운 작업임에도 익숙치 않아서 적용에 시간이 많이 걸렸고, 정리가 필요하다는 느낌이 들었다. 프로젝트를 막 시작했을때는 애니메이션이 특별히 필요하지 않다고 생각했는데, 막상 필요해지고 구현하니 앱을 조금 더 생동감있게 해주는 것 같아서 마음에 든다. 

 

 

참고자료

docs.unity3d.com/kr/2018.4/Manual/AnimationClips.html  

 

애니메이션 클립 - Unity 매뉴얼

애니메이션 클립은 Unity 애니메이션 시스템의 핵심 요소 중 하나입니다. 외부 소스에서 Unity로 애니메이션을 임포트할 수 있으며, 에디터에서 애니메이션 창을 사용하여 애니메이션 클립을 처음

docs.unity3d.com

 

'unity' 카테고리의 다른 글

[201111]unity - SQLite 연동  (0) 2020.11.11