안녕하세요! 투니드입니다! 드디어 이번 편에 처음으로 오디오를 개시(?)합니다!
바로 시작하겠습니다! 먼저 오디오 테스트를 거치기 위해서 씬을 하나 더 만들어줄게요!
씬을 하나 만들어서 보면 메인 카메라만 덜렁있습니다! 메인 카메라에는 오디오 리스너 컴포넌트가 붙어있구요!
결국 카메라에 있는 오디오 리스너를 통해서 사운드를 듣게 되는 거예요!
테스트를 위해서 바로 오브젝트를 하나 만들어볼게요! 메인 카메라 안에 빈 오브젝트를 하나 만들어주세요!
이름은 MusicManager로 하겠습니다! 그리고 MusicManager 오브젝트 안에 AudioSource 오브젝트를 하나 더 만들어서 넣어줍니다!
이렇게요! 중요한 사항이 하나 있는데요! 메인 카메라에서 소리를 감지한다고 했잖아요?
그래서 뮤직매니저와 오디오 소스 오브젝트는 메인카메라와 트랜스폼을 완전히 일치시켜 주시는 게 좋습니다!
예를 들어 저는 지금 메인 카메라의 포지션이 x : 0 y : 0 z : -10인데요! 뮤직매니저와 오디오소스를 차곡차곡 잘 넣어주셨다면 트랜스폼 포지션을 봐주세요! 모두 x : 0 y : 0 z : 0 으로 설정되어 있으면 됩니다! (로컬 포지션이기 때문입니다!)
오디오를 재생시키는 방법에는 여러 가지가 있습니다! 지금 설명드릴 건 아니지만요! 배경음도 있고 효과음도 있고 그렇잖아요? 배경음은 몰라도 효과음은, 예를 들어 총을 쐈다고 가정해 볼게요! 총을 쏘면 총구에서 팡! 소리가 나고 착탄(무언가에 맞았다는 가정하에)하면 그 위치에서 맞은 소리인 무언가가 나겠죠?
그러면 소리의 발생이 착탄 한 곳에서 발생을 하게 되고 그걸 오디오 리스너가 멀리서 소리가 들렸구나 하고 처리를 해줄 수도 있습니다!
결국 말하고 싶은 게 뭐냐면, 뮤직매니저와 오디오 소스의 위치가 맞지 않는다면 나중에 쏠림등 이상한 현상을 겪으실 수도 있으니 꼭 위치는 카메라와 동일하게 맞춰주세요!
그럼 이제 바로 스크립트를 만들러 가보죠! 뮤직 매니저 오브젝트에 MusicManager.cs 파일을 만들어 붙여주겠습니다!
아 그전에 테스트를 하려면 소리파일이 필요하잖아요? 배경음은 여기서
https://amachamusic.chagasi.com/image_kanashii3.html
悲しい音楽素材|フリー無料のBGM素材・音楽素材「甘茶の音楽工房」
悲しい音楽素材 このコーナーでは、悲しい音楽素材を、ロイヤリティ・フリー(無料)で公開しています。 音楽素材はご利用規約をお読みの上、『ダウンロード』ページよりダウンロード
amachamusic.chagasi.com
효과음은 여기서
http://www.kurage-kosho.info/system.html
システム音・電子音 -フリー効果音素材 くらげ工匠
www.kurage-kosho.info
2~3개씩 받아서 테스트용으로 사용해 보셔도 좋을 것 같아요! 아마 대부분 무료일텐데, 라이센스가 있는 파일이 있을 수 있으니 그 부분만 조심해 주시고요!
스크립트 파일로 가겠습니다! 먼저 변수 선언부입니다!
오디오 소스를 통해서 소리를 발생시킬 것이기 때문에 오디오 소스를 직렬화해 주시고요
재생시킬 음악파일 두 개, 그리고 밑에 있는 것들은 코드를 보면서 확인하시죠!
저는 배경음이 켜질 때 한 번에 빰! 하고 켜지는 게 아니라 천천히 켜졌으면 좋겠더라고요!
배경음이 전환될 때도 마찬가지고요!
그래서 코루틴을 하나씩 사용했습니다! 엄청 간단한 코드죠??
그냥 볼륨을 Time.deltaTime / volumeChangeSpeedToSecond(몇초 걸릴 건지)로 해서 키워주고 줄여주고 그게 끝입니다!
오디오 소스에서 볼륨의 값은 0~1이 끝이기 때문에 Mathf.Min/Max를 통해서 값이 이상해 지지 않도록만 잡아줬고요!
그걸 오디오 소스 볼륨에 계속해서 넣어주는 겁니다!
그럼 이제 이 코루틴을 실행시킬 메서드를 하나 만들어볼게요!
먼저 Play메서드의 매개변수로는 재생시킬 오디오 파일과, 음악이 재생 중인지 확인해 줄 부울변수를 넣어주시면 됩니다!
디폴트를 false로 잡은 건 게임이 시작했을 때만 딱 한번 BGM이 재생이 안되고 있을 것이기 때문에 다른 상황에서는 전부 교체잖아요? 그래서 그렇습니다!
그리고 코루틴 변수가 여기서 쓰였는데요! 배경음이 왔다 갔다 하는 상황이 올 수도 있잖아요??
그래서 혹시 배경음이 너무 빨리 바뀔 때는 기존에 실행 중이던 코루틴을 종료시키고 새로운 코루틴이 돌 수 있도록 만들어 준겁니다!
Start에서 Play를 시켜줄 때만 true를 직접 넣어주고, 테스트용 Update구문을 작성해 줍니다!
배경음 바뀌는 걸 테스트해봐야겠죠??
인스펙터에서 설정을 해주시고 테스트해보시길 바래요! 제가 또 동영상을 넣는 방법은 아직 몰라서, 개인이 테스트를 해보시길 바랍니다!
테스트가 끝나면 Update 구문만 지워주시면 됩니다!
그러면 이제 이걸 저희가 만들고 있는 게임에 적용을 시켜야겠죠?
에센셜씬을 로드해주시고 에센셜씬 안에 있는 메인 카메라에 뮤직 매니저를 그대로 넣어주시면 됩니다!
그리고 다시 메인씬으로 갈게요! 뮤직(BGM) 작업은 했으니 이제 효과음 테스트를 해보겠습니다!
먼저 원활한 테스트를 위해서 MusicManager는 소리가 안 나오게 잠깐 꺼주시고요!
MainCamera 오브젝트 안에 빈오브젝트를 하나 더 만들어줍니다! 이름은 AudioManager 라고 지어줄게요!
변수 선언부입니다!
오디오 소스 오브젝트를 프리팹화해서 사용할 거라, 프리팹을 받아올 변수를 하나 선언해 줬고요!
그 프리팹을 받아서 여러 개 생성시켜 가지고 돌려가면서(?) 사용할 거예요!
그래서 총 오디오 소스의 개수를 설정할 수 있는 int형 변수 한 개와 오디오 소스들을 컨트롤할 리스트 변수를 선언했습니다!
먼저 초기화(?) 작업을 하겠습니다!
여러분이 지정한 개수만큼 오디오소스 프리팹을 생성 시켜주는 겁니다! 그리고 리스트에 오브젝트들의 오디오 소스 컴포넌트들을 전부 참조시켜 줍니다!
그리고 나서 이제 플레이를 시켜줄 때 내가 가진 오디오 소스들 중에서 놀고 있는(?) 오디오 소스를 가져다가 플레이시켜주는 겁니다!
예를 들어서 2개의 오디오 소스 프리팹을 생성시켰다고 가정하고 나무를 베고 있다고 칩시다!
1번 오디오 소스에 나무가 베이는 소리가 나고 있고, 2번 오디오 소스에는 도끼질을 하는 소리, 3번에는 힘주는 소리 이런 식으로 사용을 하기 위해서입니다! 이해되시나요?
그리고 이제 Start()에다가 Init()만 넣어주시면 되구용
프리팹을 만들어 보겠습니다!
하이어라키창에서 오디오 소스를 만들어주고, 그냥 바로 Project의 프리팹 폴더로 드래그 앤 드롭해주시면 끝납니다!
(쉽다!)
이제 만든 프리팹을 넣어주시고 저는 10개 만들도록 하겠습니다! 이러면 이제 사용 준비가 끝났습니다!
그러면 간단하게 상자를 여는 소리를 넣어보도록 할게요!
예~~~~~~~~~~~전에 만들어뒀던 상자 열리고 닫히는 코드가 들어있는 곳입니다!
여기에 오디오 클립 총 2개(열릴 때, 닫힐 때)를 받아주시고, 상황에 맞는 소리를 나게 만들어줍니다!
그리고 테스트를 해보면!
잘 들리는 걸 확인하실 수 있을 겁니다!
이번 편은 여기까지입니다 감사합니다!
'StardewValleyLikeGameCloneCoding' 카테고리의 다른 글
Stardew Valley like Game in Unity Episode 20 Processing and reading data container (0) | 2025.03.26 |
---|---|
Stardew Valley like Game in Unity Episode 19-1 Crops data container (0) | 2025.03.25 |
Stardew Valley like Game in Unity / GitHub (0) | 2025.03.25 |
Stardew Valley like Game in Unity Episode 18-2 Crafting (1) | 2025.03.24 |
Stardew Valley like Game in Unity Episode 18-1 Crafting (0) | 2025.03.24 |