using UnityEngine;
using System.Collections;
public class AlarmLight : MonoBehaviour {
public bool alarmOn = false;//警报灯开关
private float turnSpeed=3f;//光强切换速度
private float highIntensity=2f;//高光强度
private float lowInensity=0f;//低光强度
private float targetIntensity=0f;//目标光强度
private Light currentlt;//当前灯光组件
void Awake(){
currentlt = GetComponent<Light> ();
}
void Update(){
//如果开启警报
if (alarmOn) {
//确定目标光强
if (currentlt.intensity == lowInensity) {
//如果当前光强为低光强,设置目标光强为高光强
targetIntensity = highIntensity;
} else if (currentlt.intensity == highIntensity) {
//如果当前光强为高光强,设置目标光强为低光强
targetIntensity = lowInensity;
}
//设置当前光照强度
currentlt.intensity = Mathf.Lerp (currentlt.intensity, targetIntensity, Time.deltaTime * turnSpeed);
//如果当前光照强度已经特别接近目标,将其值设置为目标值
if (Mathf.Abs (currentlt.intensity - targetIntensity) <= 0.05f) {
currentlt.intensity = targetIntensity;
}
} else {
//慢慢切换到地光强
currentlt.intensity = Mathf.Lerp (currentlt.intensity, lowInensity,
Time.deltaTime * turnSpeed);
//光强接近时归零
if (currentlt.intensity-lowInensity<=0.05f) {
currentlt.intensity = lowInensity;
}
}
}
}
警报灯光的闪烁变化
最新推荐文章于 2022-09-20 14:43:26 发布