본문 바로가기

지식창고/Unity엔진

Unity5 Mecanim Animation Tutorial - Part6

반응형

Part6. 춤모션에 사운드 재생시키기

 

Part5 항목까지 잘 따라오셨다라는 가정하에 여러분께서 적용시킨 춤모션에 맞는 노래가 흘러나올 수 있도록 사운드를 재생시켜주는 방법에 대해서 진행하도록 하겠습니다.

 

먼저 해당 춤모션에 음원파일의 이름을 변경하여 줍니다.

 

저는 Girls라는 곡의 춤모션을 사용하였기 때문에 음원의 이름을 Girls로 하여주었습니다.

 

(아마 여러분께서 다운받는 음원은 MP3로 되어 있을 것입니다. MP3 상태로 유니티에 Import하여도 문제될 것은 없지만 수 많은 사운드 파일들을 사용하게 되는 게임의 경우 나중에 많은 용량을 차지하게 되게 됩니다. 

 

그렇기에 현업 개발자 분들이나 튜토리얼을 보더라도 사운드 파일은 WAV파일로 변경하여 Import시키는 것을 추천합니다. 

 

저도 개인적으로 WAV가 아닌 다른 확장명의 사운드들을 추가하여 사용하여 보았는데 간혹가다 사운드가 깨진다거나 하는 현상도 접할 수 있었습니다.

그렇기에 여러분께서도 구하신 음원파일이 WAV이외의 파일이라면 변경프로그램을 이용하여 WAV파일로 변경하여 Import시켜 사용하는 것을 추천합니다.)

 

[그림 33 - 1]

Project 탭에서 새로운 폴더를 생성하여 폴더명을 02. Sound로 변경하여 주시기 바랍니다.

(※폴더 생성방법 : Assets우클릭 -> Create -> Folder클릭)

 

[그림 33 - 2]

여러분께서 사용하고자 하는 사운드 파일의 원본을 클릭하여 애니메이션 파일을 복사했던 방법처럼 Ctrl + D로 복사를 하여 줍니다.

 

[그림 33 - 3]

이렇게 복사된 사운드 파일을 새롭게 생성한 02. Sound 폴더로 드래그 앤 드랍하여 이동시켜주시기 바랍니다.

 

[그림 33 - 4]

이동시킨 사운드 파일의 이름을 Girls로 변경하여 주시기 바랍니다.

 

[그림 34 - 1]

사운드 파일의 재생이 그냥 이루어지는 것이 아닌 Audio Source를 통하여 재생되어지기 때문에 Hierarchy탭에서 MMD 캐릭터 오브젝트를 클릭하여 줍니다.

 

Inspector탭에서 Add Component를 눌러 검색란에 audi까지만 치셔도 Audio에 해당하는 Component들이 검색되어지는데 이 중에서도 Audio Source를 클릭하여 Component를 추가하여 줍니다.

 

[그림 34 - 2]

이렇게 추가되어진 Audio Source는 Inspector탭에서 확인하실 수 있을 것입니다.

 

[그림 35 - 1]

사운드 또한 특정 경우에만 재생해주고자 하기 때문에 스크립트로 컨트롤하여 주도록 하겠습니다.

 

먼저, 새로운 스크립트를 생성하여 스크립트의 이름을 GameSound로 변경하여 주신 후 

더블클릭하여 비쥬얼 스튜디오로 열어주도록 하겠습니다.

(※스크립트 생성 방법 : Assets에서 우클릭 -> Create -> C# Script클릭)

 

[그림 35 - 2]

새롭게 생성한 GameSound 소스를 일단 그림 35-2 처럼 코드를 작성하여 준 후 저장을 하도록 하겠습니다..

 

[그림 35 - 3]

GameSound 스크립트를 Hierarchy탭의 MMD캐릭터 오브젝트로 드래그 앤 드랍하여 추가하여 주도록 합니다.

 

[그림 35 - 4]

이렇게 MMD 캐릭터 오브젝트에 추가된 스크립트는 Inspector탭에서 확인해볼 수가 있습니다.

 

자 그럼 그림35-4를 다시 보시면 GameSound 스크립트 부분에 Dance Audio 항목이 보이실 것입니다.

 

해당 항목의 바로 아래 Size가 0으로 표시되어 있을 것인데 그 이유는 그림 35-2에서 스크립트에 public AudioCilp[] danceAudio;라고 작성하였기 때문입니다.

 

프로그래밍 공부를 배열까지만이라도 해보신 분은 이해하시기 편하리라 생각되어집니다.

 

AudioCilp라는 배열로 선언을 해두었기 때문에 유니티의 Inspector 탭에서 해당 스크립트 부분에서 원하는 대로 배열의 크기를 지정해줄 수 있는 것입니다.

 

말로만 설명드려 이해하시도록 하는 것보다 사이즈의 수치를 변경하였을 때 어떠한 식으로 변화가 되어지는지를 보여드릴 수 있는 그림들을 첨부하도록 하겠습니다.

 

[그림 35 - 5]

 

[그림 35 - 6 ]

 

[그림 35 - 7 ]

그림 35-5부터 35-7까지 보시는 바와 같이 Size의 수치에 따라 element의 수가 함께 증가하는 것을 확인해 보실 수 있을 것입니다.

 

현재까지는 1개의 Dance Audio를 사용할 것이기 때문에 Dance Audio의 Size를 1로 변경하여 Element 0에 추가해주도록 하겠습니다.(그림 35-8)

 

[그림 35 - 8]

 

[그림 35 - 9]

사용할 사운드 파일을 Element 0에 추가를 해주셨다면 GameSound스크립트를 그림35-9와 같이 작성하여 주시기 바랍니다.

 

이렇게 간단한 코드로 원하는 사운드가 재생될 수 있는 기본적이 셋팅이 완료가 된 것입니다.

 

하지만 이렇게만 작성한다고 해서 바로 사운드가 나오는 것이 아니며 원하는 애니메이션에서 사운드를 재생시켜주는 함수를 호출하여 재생이 기능하도록 하여 주도록 하겠습니다.

 

[그림 36 - 1]

유니티의 메뉴 중 Window를 눌러 Animation을 클릭하여 줍니다.

(단축키 Ctrl + 6)

 

[그림 36 - 2]

그러면 그림 36-2와 같이 Animation 탭이 활성화 되어 나타나게 되는데 그림과 같이 탭만 보이는 것이 정상인 것입니다.

 

왜냐하면 해당 탭을 Animation 파일을 가지고 있는 오브젝트를 클릭하였을 때 해당 오브젝트에 어떠한 Animation파일들을 가지고 있는지를 불러와 편집하여 줄 수 있는 탭이기 때문입니다.

 

[그림 36 - 3]

Hierarchy탭에서 MMD 캐릭터 오브젝트를 클릭하여 주게 되면 그림 36-2 때와는 다르게 눈이 아플정도 많은 것들이 보여지게 됩니다.

 

여기서 눈을 아프게 해주는 요소들은 가볍게 넘어가 주시고 Idle이라고 되어 있는 부분을 클릭하여 Girls_Audio로 변경하여 주시기 바랍니다.(그림 36-4)

 

[그림 36 - 4]

 

[그림 36 - 5]

Girls_Audio로 변경하여 주신 후 바로 위에 빨간 동그란 점(녹화버튼)을 눌러 주신 다음 우리의 눈을 아프게 하는 많은 동그라미가 보이는 곳에서 제일 위(진한 쥐색)에서 우클릭을 하여

Add Animation Event를 클릭하여 줍니다.

 

[그림 36 - 6]

그럼 Edit Animation Event라는 새로운 팝업창이 활성화가 됩니다.

 

이 팝업창에서 Function항목의 No Function Selected를 클릭하여 줍니다.

 

[그림 36 - 7]

No Function Selected를 클릭하면 그림36-7과 같이 이번에는 수 많은 함수들이 보여지는데 이 함수들은 가볍게 무시하여 주고 맨 아래에 보이는 ▼를 눌러 No Function Selected가 보이는 제일 하단까지 내려갑니다.

 

[그림 36 - 8]

제일 하단까지 내려가시면 우리가 사용하고자 하는 GameSound 스크립트의 girls_Audio함수가 보이게 됩니다.

 

해당 함수를 클릭하여 줍니다.

 

[그림 36 - 9]

자 이제 우리가 원하는 사운드를 우리가 원하는 애니메이션에서 재생하여 줄 수 있도록 모든 준비가 맞춰진 상태가 입니다.

 

그럼 제대로 사운드가 재생되는지 테스트하여 보기 위해 유니티에서 Play버튼을 눌러보도록 하겠습니다.

 

[그림 36 - 10]

그림 36-10과 같이 Inspector탭의 AudioClip 항목이 아직까지는 None로 되어 있는 것을 확인 하실 수 있을 것입니다.

 

설정이 끝났다고 하는데 왜 안되는거지? 내가 잘못한건가?

 

잘못하신 것이 아닙니다. None으로 되어 있는 것이 정상이니 걱정하지 않으셔도 됩니다.

 

자 그렇다면 우리는 춤 애니메이션을 키보드 1번키를 눌러 구동되도록 하였습니다.

 

이제 1번키를 눌러보도록 할까요?

 

[그림 36 - 11]

1번키를 누르니 조금전까지 None으로 확인되었던 AudioClip부분이 어떻게 바뀌었는가요?

 

여러분께서 사용하시고자 하는 사운드파일로 변경된 것을 확인하실 수 있을 것입니다.

 

(저는 Girls명의 사운드 파일을 사용하였기에 Girls로 바뀐 것입니다.)

 

[그림 36 - 12]

하지만, W키를 눌러도 캐릭터는 Idle애니메이션을 구동하고 있지만 여전히 사운드 파일이 재생되어지고 있는 것을 알게 되실 것입니다.

 

이것 또한 아주 간단한 방법으로 Idle상태가 되었을 시 재생되어지는 사운드를 멈추도록 해주겠습니다.

 

[그림 37]

DanceController스크립트를 열어 그림 37과 같이 작성하여 주시기 바랍니다.

 

크게 수정된 부분은 없으며 단지 Update함수의 If문 안에 간단하게 한줄이 추가 된 것 뿐입니다.

 

이렇게 금일 튜토리얼인 Part6. 춤모션에 사운드 재생시키기가 끝났습니다.

 

튜토리얼에 사용된 엔진 및 리소스 출처

사용한 엔진 : Unity 5.0.0f4 

사용된 모션 : MMD Girls 춤 애니메이션, BlueHole의 TERA - 여 하이엘프 모션.

사용된 캐릭터 : 애니메이션 '낙원추방'의 안젤라발자크(MMD로 제작된 캐릭터)

 

반응형