Unity简单的声⾳切换渐变实现
在学习Stealth案例教程中,如果按照⽼师的写法感觉并没有实现想要的声⾳渐变效果,于是就⾃⼰多写了⼀点。代码有点多,不过功能是实现了的。在⽹上也看到有⼈⽤协程来处理声⾳渐变效果,有时间我也试⼀下。
以下代码运⾏结果⼤概是这样:警报开启后,默认的bgm声⾳逐渐减⼩,然后切换到有急促感的bgm,再把声⾳逐渐放⼤;当警报解除后,⼜从此bgm以同样的⽅式渐变切换到默认bgm。
其中⽤到的Mathf.Lerp(),伙伴们可查API。。。。^_^
private void Update()
{
AlarmLight._instance.alarmOn = this.alarmOn;
if (alarmOn)
{
/
/声⾳切换渐变⼤法
//如果当前声⾳是⼩的,⽬标声⾳是1,则切换声⾳⽂件
if (bgmAudio.volume <= 0.1 && targetVolume == 1)
{
bgmAudio.clip = bgmClip[1];
canChange = true;//可以切换
bgmAudio.Play();
}
//如果当前声⾳是正常的,并且⽬标声⾳是0,是否可以改变为false
if (bgmAudio.volume > 0.1 && targetVolume == 0 && canChange == false)
{
/
/将声⾳渐变到0
bgmAudio.volume = Mathf.Lerp(bgmAudio.volume, targetVolume, Time.deltaTime * bgmChangeSpeed);
if (bgmAudio.volume <= 0.1)
{
targetVolume = 1;
}
}
//如果当前声⾳⽬标是1,并且可以切换
if (targetVolume == 1 && canChange)
{
//将声⾳渐变到1
bgmAudio.volume = Mathf.Lerp(bgmAudio.volume, targetVolume, Time.deltaTime * bgmChangeSpeed);
if (bgmAudio.volume >= 0.6)
{
canChange = false;
}
}
SirenOnPlay();
}
else
{
//声⾳切换渐变⼤法
if (bgmAudio.volume <= 0.1 && targetVolume == 0)
{
bgmAudio.clip = bgmClip[0];
unity 教程canChange = true;
bgmAudio.Play();
}
if (bgmAudio.volume > 0.1 && targetVolume == 1 && canChange == false)
{
{
bgmAudio.volume = Mathf.Lerp(bgmAudio.volume, targetVolume - 1, Time.deltaTime * bgmChangeSpeed);
if (bgmAudio.volume <= 0.1)
{
targetVolume = 0;
}
}
if (targetVolume == 0 && canChange)
{
bgmAudio.volume = Mathf.Lerp(bgmAudio.volume, targetVolume + 1, Time.deltaTime * bgmChangeSpeed);
if (bgmAudio.volume >= 0.5)
{
canChange = false;
}
}
SirenOnStop();
}
}