Интенсивность света применяется только для getkeyup, а не getkey - PullRequest
0 голосов
/ 09 мая 2019

Я пытаюсь изменить интенсивность света, пока игрок держит клавишу.

Удерживая клавишу в окне инспектора, интенсивность света изменяется, пока я удерживаю клавишу нажатой (я тоже пробовал без сопрограмм и не работал), но интенсивность изменяется только на Inpsector, когда на сцене или в игре ничего не происходит .

В тот момент, когда я отпускаю клавишу, свет применяет новое значение интенсивности, но то, что мне действительно нужно, применяется, пока я держу клавишу.

Кто-нибудь может мне помочь? Спасибо!

Код:

public class LightBulbController : MonoBehaviour
{
    public Light myLight;


    //Intensity Variables
    public bool changeIntensity = false;
    public float intensitySpeed = 1.0f;
    public float maxIntensity = 10.0f;

    float startTime;

    bool startedCo = false;

    private void Start()
    {
        startTime = Time.time;
    }

    private void Update()
    {

        /*if (changeIntensity)
        {
            myLight.intensity = Mathf.PingPong(Time.time * intensitySpeed, maxIntensity);
        }*/


        if (Input.GetKey(KeyCode.UpArrow))
        {
            if (!startedCo)
            {
                StartCoroutine(LerpLight());
                startedCo = true;
            }
        }
    }

    IEnumerator LerpLight()
    {
        float duration = maxIntensity; 
        float totalTime = 0;

        while (totalTime <= duration)
        {
            totalTime += Time.deltaTime;

            myLight.intensity = totalTime * intensitySpeed;
            yield return null;
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...