unity制作警报模式的效果(Light)

编程入门 行业动态 更新时间:2024-10-20 00:34:45

unity制作<a href=https://www.elefans.com/category/jswz/34/1770878.html style=警报模式的效果(Light)"/>

unity制作警报模式的效果(Light)

最近在开发秘密行动(stealth)
里边的警报系统效果挺有趣的
这篇博客实现一下警报的效果 大致就是让一个灯光闪烁

首先創建一個Light 我們的思路是动态新修改Light中的Intensity来实现修改灯光的闪烁

这个值越大 灯光越亮(还有可以修改Range(半径)来控制灯光的亮度)
我们只需要让它在一个范围之内动态变化即可

我们创建一个脚本来动态修改

public bool isAlarm ;//控制警报是否开始private float AnimSpeed = 3;//警报切换速度private float lowIntensity = 0;//最小值private float highIntensity = 0.6f;//最大值private float TargetIntensity;//用来变化的值private Light alarmLight;private void Start(){TargetIntensity = highIntensity;//默认最亮isAlarm = false;alarmLight = GetComponent<Light>();//脚本赋值}private void Update(){if(isAlarm){//报警状态alarmLight.intensity = Mathf.Lerp(alarmLight.intensity, TargetIntensity,AnimSpeed * Time.deltaTime);//随着每帧的变化而变化if (Mathf.Abs(alarmLight.intensity - TargetIntensity) < 0.01f){//近似相等if (highIntensity == TargetIntensity){TargetIntensity = lowIntensity;}else if (TargetIntensity == lowIntensity){TargetIntensity = highIntensity;}}}}

脚本不是很难理解
其中有个插值(lerp)
Unity 的mathf.lerp(float a,float b,float t)是线性插值函数

a,b的顺序很重要,

如果a=10,b=0,则说明是从10到0的变化。

如果是a=0,b=10,则说明是从0向10的变化。

t的范围在0,1之间(这很重要)
每一次调用mathf.lerp函数,它根据参数返回一个值。

比如 mathf.lerp(0,10f,0.25f)=2.5

mathf.lerp(10f,0,0.25f)=7.5

(注意上述两者的区别)
最后给大家一个效果图

如果你也是unity爱好者 欢迎关注我的博客
我在这里会持续更新我的学习过程

更多推荐

unity制作警报模式的效果(Light)

本文发布于:2024-03-14 04:10:28,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1735590.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:警报   效果   模式   unity   Light

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!