增加光点角度超时
Increase Light spotAngle overtime
我有一个小问题。我想在一段时间内增加 Light.spotAngle
属性。书面代码有效,但我希望这种速度增加,或类似的东西。我想以一定的速度增加点角度的值,不是直接100,而是从30慢慢增加10到100。
Transform thisLight = lightOB.transform.GetChild(0);
Light spotA = thisLight.GetComponent<Light>();
spotA.spotAngle = 100f;
我尝试使用 Time.DeltaTime,但没有用。
求助!!!
使用 Mathf.Lerp
从值 a
到 b
。根据你的问题,a值为10
,b值为100
。在协程函数中执行此操作。这使您可以控制希望缓慢传输发生多长时间。
单击对象时,启动协程功能。
协程函数:
IEnumerator increaseSpotAngle(Light lightToFade, float a, float b, float duration)
{
float counter = 0f;
while (counter < duration)
{
counter += Time.deltaTime;
lightToFade.spotAngle = Mathf.Lerp(a, b, counter / duration);
yield return null;
}
}
将在 5 秒内将 Light 的 SpotAngle 从 10 更改为 100。
public Light targetLight;
void Start()
{
StartCoroutine(increaseSpotAngle(targetLight, 30, 100, 5));
}
请参阅 post 了解如何检测对任何游戏对象的点击。
我有一个小问题。我想在一段时间内增加 Light.spotAngle
属性。书面代码有效,但我希望这种速度增加,或类似的东西。我想以一定的速度增加点角度的值,不是直接100,而是从30慢慢增加10到100。
Transform thisLight = lightOB.transform.GetChild(0);
Light spotA = thisLight.GetComponent<Light>();
spotA.spotAngle = 100f;
我尝试使用 Time.DeltaTime,但没有用。 求助!!!
使用 Mathf.Lerp
从值 a
到 b
。根据你的问题,a值为10
,b值为100
。在协程函数中执行此操作。这使您可以控制希望缓慢传输发生多长时间。
单击对象时,启动协程功能。
协程函数:
IEnumerator increaseSpotAngle(Light lightToFade, float a, float b, float duration)
{
float counter = 0f;
while (counter < duration)
{
counter += Time.deltaTime;
lightToFade.spotAngle = Mathf.Lerp(a, b, counter / duration);
yield return null;
}
}
将在 5 秒内将 Light 的 SpotAngle 从 10 更改为 100。
public Light targetLight;
void Start()
{
StartCoroutine(increaseSpotAngle(targetLight, 30, 100, 5));
}
请参阅