-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathAudioDuckingRegion.js
46 lines (37 loc) · 1.32 KB
/
AudioDuckingRegion.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#pragma strict
var duckingObject : GameObject;
var moveControllerComponent : MoveController;
var duckingVal : float = .5f;
var StopAudioOnComplete : boolean = false;
var audioSource : AudioSource;
function Start () {
audioSource = duckingObject.GetComponent.<AudioSource>();
// go one or two levels up, since in VR the parent may be shifted around:
moveControllerComponent =
duckingObject.transform.parent.GetComponent.<MoveController>() ||
duckingObject.transform.parent.parent.GetComponent.<MoveController>();
}
function OnTriggerEnter (other : Collider) {
if (other.gameObject.layer == 16) {
if (duckingObject.GetComponent.<AudioSource>()) {lerpDuck(2, duckingVal);}
}
}
function OnTriggerExit (other : Collider) {
if (other.gameObject.layer == 16) {
if (duckingObject.GetComponent.<AudioSource>()) {lerpDuck(2, 1);}
}
}
function lerpDuck (timer : float, endVal : float) {
if (!StopAudioOnComplete && !audioSource.isPlaying) {audioSource.UnPause();}
var start = audioSource.volume;
var end = endVal;
var i = 0.0;
var step = 1.0/timer;
while (i <= 1.0) {
i += step * Time.deltaTime;
moveControllerComponent.setMaxDuckedVolume( Mathf.Lerp(start, end, i) );
yield;
}
yield WaitForSeconds (timer);
if (StopAudioOnComplete) {audioSource.Pause();}
}