Unity3D实现警报灯
程序员文章站
2022-05-14 22:12:53
本文实例为大家分享了unity3d实现警报灯的具体代码,供大家参考,具体内容如下
功能介绍:角色进入危险状态,触发警报灯。灯光开启,逐渐变亮,亮度达到最大值,逐渐变暗。 角色脱离危险...
本文实例为大家分享了unity3d实现警报灯的具体代码,供大家参考,具体内容如下
功能介绍:角色进入危险状态,触发警报灯。灯光开启,逐渐变亮,亮度达到最大值,逐渐变暗。 角色脱离危险,警报灯关闭。同时触发报警音乐的开启和关闭。
1.首先在场景中添加一盏警报灯。(alarm light)
2.设置好其transfrom,tag等。
3.默认不开启,intensity值为0. 颜色一般为暗红色rgb(70,0,0)。
4.culling mask为everying,不参与烘培,mode为realtime。
添加脚本:
public float fadespeed=2f; //灯光亮度渐变速度 public float highintensity=4f; //亮度最大值 public float highintensity=0f; //亮度最小值 public float changemargin=0.2f; //改变目标亮度的标志 public bool alarmon; //是否开启警报灯 private float targetintensity; //目标亮度,朝着改变的亮度 private light alarmlight; //警报灯对象 void awake(){ alarmlight=getcomponent<light>(); alarmlight.intensity=0; //初始量度为0 targetintensity=highintensity; //目标为最大亮度 } //切换目标亮度 void changetargetintensity(){ if(mathf.abs(targetintensity-alarmlight.intensity)<changemargin){ if(targetintensity==hightensity) targetintensity=lowtensity; else targetintensity=hightensity; } } //控制警报灯开启逻辑代码 void update(){ if(alarmlight){ alarmlight.intensity=mathf.lerp(alarmlight.intensity,targetintensity,fadespeed*time.deltatime); changdetargetintensity(); }else{ alarmlight.intensity=mathf.lerp(alarmlight.intensity,0f,fadespeed*time.deltatime); changdetargetintensity(); } }
changetargetintensity():警报灯亮度朝着目标亮度变化,当前警报灯亮度达到接近最大值时,目标亮度变为最小值,反之,当前亮度接近最小值时,目标亮度变为最大值。
update():如果开启警报,警报灯亮度就开始朝着目标亮度变化。
static function lerp ( from : float , to : float , t : float ) ; float 在t时间内,由浮点数a均匀变化到b的插值。
可以在unity视图中,勾选alarmon来检验。在别的脚本中,调用该脚本alarmon,来实现警报灯开关。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
上一篇: Unity3D实现人物转向与移动