我有一个小问题。我希望在一段时间内增加Light.spotAngle
财产。编写的代码可以工作,但我希望这种增加速度,或类似的东西。我希望以某种速度增加点角度的值,而不是直接100,而是从30慢慢增长10到100。
Transform thisLight = lightOB.transform.GetChild(0);
Light spotA = thisLight.GetComponent<Light>();
spotA.spotAngle = 100f;
我尝试过Time.DeltaTime,但是没有用。 帮助!
答案 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帖子。