Time.time / 2 * Mathf.PI;在网上搜有人说是求余弦,这感觉不可能,求什么意思
您好~这是什么脚本或者什么情况下这么使用的呢?
/2PI是用来算周期的~2PI即360度嘛~
public static Alert_Light _instance;
public bool isAlert = false;
public float duration = 1.0F;
public Light lt;
void Start()
{
lt = GetComponent<Light>();
_instance = this;
}
void Update()
{
if (isAlert)
{
float phi = Time.time / duration * Mathf.PI;
float amplitude = Mathf.Cos(phi) + 1.5F;
lt.intensity = amplitude;
}
else
{
lt.intensity = Mathf.Lerp(lt.intensity, 0, Time.deltaTime * 2);
}
}
灯光在1秒特定时间内闪烁一次,游戏运行过程中一直进行,只是查询的linght中的Intensity API代码,就上面我所发的那一行在网上搜说是余弦定理,感觉在瞎扯,这明明是周长,问问这行代码究竟是什么意思,
您好~我们来看一下数学方面的知识
float phi = Time.time / duration * Mathf.PI;
float amplitude = Mathf.Cos(phi) + 1.5F;
lt.intensity = amplitude;
第三句是设置光强所以我们忽略掉,看一、二两句是否可以经过以下几步改写成一个函数
Time.time是游戏开始一直到当前帧所经历的的时间,单位是秒,我们可以看成自变量x,有
phi=x/duration*PI
此处的duration为闪烁间隔,上式带入,有
amplitude=cos(x/duration*PI)+1.5
这里我们再将最后需要的amplitude看做因变量y
得到函数
y=cos(x/duration*PI)+1.5
其中duration为给定的参数,是闪烁间隔,1.5其实也可以是参数,也就是额外增加的光强
最后我们得到如下函数表达式
y=cos(x/d*PI)+a,其中d为闪烁间隔,a为额外光强
这里我们取d=1,a=1.5可以得到函数图像如下