增加光点角度超时

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 从值 ab。根据你的问题,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 了解如何检测对任何游戏对象的点击。