增加光点角度加班

时间:2018-02-01 11:51:59

标签: c# unity3d light

我有一个小问题。我希望在一段时间内增加Light.spotAngle财产。编写的代码可以工作,但我希望这种增加速度,或类似的东西。我希望以某种速度增加点角度的值,而不是直接100,而是从30慢慢增长10到100。

Transform thisLight = lightOB.transform.GetChild(0);
Light spotA = thisLight.GetComponent<Light>();
spotA.spotAngle = 100f;

我尝试过Time.DeltaTime,但是没有用。 帮助!

1 个答案:

答案 0 :(得分:1)

使用Mathf.Lerp从值a lerp到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));
}

有关如何检测任何GameObject的点击,请参阅this帖子。