AudioSource 컴포넌트의 3D Sound Setting에서 음향 거리, 곡선 등을 조정했는데도, 거리가 멀어져도
소리가 바로 앞에서 들리는 경우가 있다.
Inspector 창의 맨 오른쪽 자물쇠 옆에 있는 메뉴바를 누르고 Debug를 눌러주면 AudioSource 컴포넌트에 나와있는
속성들이 바뀌어져 있는 것을 볼 수 있다. 거기서 Pan Level Custom Curve이 0에 위치해 있다면 이를 1로 바꾸어 보자.
Pan Level Custom Curve는 1에 가까워질 수록 3D 음향에 가까워지고,
반대로 수치가 낮아질 수록 2D 음향에 가까워지는 속성이다.
cf )
만약 AudioSource를 스크립트 상에서 추가를 할 경우, 아래와 같이 Pan Level Custom Curve 값을 바꾸어줄 수 있다.
GameObject soundObj = new GameObject("Sound");
AudioSource source = soundObj.AddComponent<AudioSource>();
source.maxDistance = 10f;
AnimationCurve ac = source.GetCustomCurve(AudioSourceCurveType.SpatialBlend);
Keyframe[] keys = new Keyframe[1];
for(int i = 0; i < keys.Length; ++i)
{
keys[i].value = 1f;
}
ac.keys = keys;
source.SetCustomCurve(AudioSourceCurveType.SpatialBlend, ac);
AudioSourceCurveType 중 SpatialBlend가 Pan Level Custon Curve를 가져오는 것으로,
해당 Curve의 KeyFrame들을 가져와 그 값들을 1로 변경해준 뒤 Set 해주면 3D 음향으로 변경되는 것을 알 수 있다.
KeyFrame은 Struct이기 때문에 GC에게 부담을 주진 않겠지만, 그래도 AudioSource를 만들어 둔 뒤 재활용하는 것이
좋을 것 같다.
'Unity 공부시작' 카테고리의 다른 글
[Unity3D] NavMeshAgent 미끄러짐 or 순간이동 현상 (0) | 2020.01.05 |
---|---|
Unity3D NavMeshAgent의 SetDestination, ResetPath (0) | 2019.04.02 |
transform.TransformDirection(float x, float y, float z) (0) | 2019.03.31 |
유니티 :: 마크업 태그 (0) | 2019.02.02 |
유니티 :: Color 색상 RGBA 값 (0) | 2019.02.02 |