当前位置: 移动技术网 > IT编程>开发语言>c# > Unity3D实现警报灯

Unity3D实现警报灯

2020年03月09日  | 移动技术网IT编程  | 我要评论
本文实例为大家分享了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,来实现警报灯开关。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持移动技术网。

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网