오늘은 특정 공간에 들어가면 음악이 재생되는 뮤직 존을 구현해 볼 것이다.
특정 공간을 만들기 위해 오브젝트를 생성하고
박스 콜라이더와 오디오 소스 컴포넌트를 추가한다.
그리고 뮤직존이라는 스크립트 작성을 시작한다.
먼저 변수들을 작성하는데
재생할 음악(audioSource), 변화시간주기(fadeTime), 최대볼륨(maxVolume), 타겟볼륨(targetVolume)을 작성해준다.
그 다음 스타트에서 타겟불륨을 0으로 설정하고, 오디오 소스를 컴포넌트에서 가져오고,
오디오소스의 볼륨을 타겟볼륨 즉, 0 으로 설정해준다. 그리고 오디오소스를 재생해준다.
그리고 업데이트에서 if문을 작성하는데
Mathf.Approximately가 뭐냐면
Mathf.Approximately(a, b)는 a값과 b값이 거의 같은 값인지 비교하는 함수이다.
즉, 오디오소스볼륨이 타겟볼륨과 같은 지 비교하고, 같지 않다면 if문을 발동시킨다.
그리고 Mathf.MoveTowards는 또 뭐냐고 물어본다면
Mathf.MoveTowards(a, b, c)는 a를 b로 천천히 변화시키되, 한 번에 최대 c만큼 이동하도록 하는 함수이다.
즉, 오디오소스볼륨을 타겟볼륨으로 (maxVolume / fadeTime) * Time.deltaTime 만큼 이동하는 것이다.
근데 여기서 퀘스쳔 지금 타겟볼륨도 0이고 오디오소스볼륨도 0이잖아. 그럼 어디서 타겟볼륨을 높여?
이제 나온다.
플레이어 태그를 단 플레이어 오브젝트가 이 뮤직존 공간에 들어가면 타겟볼륨을 맥스볼륨으로 만들고,
빠져나온다면 타겟볼륨을 0으로 만든다.
정리하자면 뮤직존에 들어가면 음악이 재생되는 것이 아니라 음악은 게임 시작부터 재생되지만
뮤직존에 들어가면 음악크기가 늘어나는 것이었다!!
'TIL' 카테고리의 다른 글
기초부터 탄탄하게! - 액션(Action)과 펑션(Func)편 (2) | 2025.03.21 |
---|---|
기초부터 탄탄하게! - abstract, virtual편 (2) | 2025.03.20 |
유니티 플레이어 체온 구현과 뜨거운 곳, 차가운 곳 들어갔을 때 효과 구현 (3) | 2025.03.13 |
유니티 플레이어 체온 구현하기 (3) | 2025.03.12 |
유니티 움직이는 플랫폼 구현하기 (4) | 2025.03.11 |