-
C#教程之Unity3D实现警报灯
本站最新发布 C#从入门到精通
试听地址 https://www.xin3721.com/eschool/CSharpxin3721/
试听地址 https://www.xin3721.com/eschool/CSharpxin3721/
本文实例为大家分享了Unity3D实现警报灯的具体代码,供大家参考,具体内容如下
功能介绍:角色进入危险状态,触发警报灯。灯光开启,逐渐变亮,亮度达到最大值,逐渐变暗。 角色脱离危险,警报灯关闭。同时触发报警音乐的开启和关闭。
1.首先在场景中添加一盏警报灯。(Alarm Light)
2.设置好其Transfrom,Tag等。
3.默认不开启,Intensity值为0. 颜色一般为暗红色RGB(70,0,0)。
4.Culling Mask为Everying,不参与烘培,Mode为Realtime。
添加脚本:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
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,来实现警报灯开关。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
栏目列表
最新更新
C# 面向对象
假设客车的座位数是9行4列,使用二维数
C#基于接口设计三层架构Unity篇
C#线程 入门
C#读取静态类常量属性和值
C# 插件式编程
C# 委托与事件有啥区别?
C#队列学习笔记:队列(Queue)和堆栈(Stack
linq 多表分组左连接查询查询统计
C#队列学习笔记:MSMQ入门一
C# 在Word中添加Latex 数学公式和符号
inncheck命令 – 检查语法
基于UDP的服务器端和客户端
再谈UDP和TCP
在socket编程中使用域名
网络数据传输时的大小端问题
socket编程实现文件传输功能
如何优雅地断开TCP连接?
图解TCP四次握手断开连接
详细分析TCP数据的传输过程
SqlServer 利用游标批量更新数据
BOS只读状态修改
SQL Server等待事件—PAGEIOLATCH_EX
数据库多行转换为单一列
获取数据表最后最后访问,修改,更新,
计算经历的时间
SQL查询结果自定义排序
修改数据库默认位置
日期简单加或减
从日期获取年,月或日