为light_alarm_directional添加脚本DoneAlarmLight
//AlarmLight.cs
using UnityEngine;
using System.Collections;
public class DoneAlarmLight : MonoBehaviour
{
public float fadeSpeed = 2f; // 警报灯强度的变化速度
public float highIntensity = 2f; // 警报灯最大强度值
public float lowIntensity = 0.5f; // 警报灯最小强度值
public float changeMargin = 0.2f; // 阈值,决定何时改变强度变化的方向
public bool alarmOn; // 检测警报是否开启
private float targetIntensity; // 警报灯强度改变的目标强度值
void Awake ()
{
// 场景刚开始时,警报灯强度设为0
light.intensity = 0f;
// 第一次,警报灯强度值会向最大强度值改变
targetIntensity = highIntensity;
}
void Update ()
{
// 如果警报开启
if(alarmOn)
{
// 警报灯强度会 以设定的变化速度从当前强度向目标强度改变
light.intensity = Mathf.Lerp(light.intensity, targetIntensity, fadeSpeed * Time.deltaTime);
// 这个函数检查目标强度是否需要改变 如果需要则进行改变
CheckTargetIntensity();
}
else
// 如果警报被关闭 警报灯强度渐变为0
light.intensity = Mathf.Lerp(light.intensity, 0f, fadeSpeed * Time.deltaTime);
}
void CheckTargetIntensity ()
{
// 如果 当前强度 与 目标强度 的差值的绝对值 小于 阈值
if(Mathf.Abs(targetIntensity - light.intensity) < changeMargin)
{
// 如果当前目标强度为 最大强度
if(targetIntensity == highIntensity)
// 那么就改设为 最小强度
targetIntensity = lowIntensity;
else
// 否则 设为 最大强度
targetIntensity = highIntensity;
}
}
}
这个写代码反而要简单点。。。美术要那么多配置,看着也是头疼
写完代码后保存,为6个喇叭(prop_megaphone_001---006)绑定音频源组件audio source,将Audio中的alarm_triggered添加到对应音频剪辑属性栏中
取消paly on awake(开始默认状态关闭),勾选Loop(循环播放),3D里面 min distance设为5,这是声音的范围