Hej

Mam problem z liniową zmianą wartości zmiennej (sam nie wiem czy dobrze to nazwałem).

Mam taki kod:

    private void update()
    {
        if(Gdx.input.isKeyPressed(Keys.A))
        {
            r -= 4;
        }
        time += Gdx.graphics.getDeltaTime();
        if(zmiennaCzasowa < time)
        {
//          r += (1*time*0.3f) ;
            r += 10;
        }
        kreska2.setRotation(r);
    }

Obracam obiekt 'kreska2' i chciał bym, żeby po naciśnięciu klawisza obrót zwalniał o daną wartość i znowu przyspieszał. Problem w tym kodzie polega na tym, że kiedy obiekt zwolni o podaną wartość to automatycznie wraca do zadeklarowanej wcześniej wartości, nie wiem jak to zrobić, żeby było płynnie/liniowo.
Próbowałem dodawać zmienną czasową, działało ale zmienna 'time' ciągle rosła więc to też nie jest rozwiązaniem.

Jak sobie z czymś takim poradzić?

@Edit: Stworzyłem potwora, który działa:

		if(1 < 2)
		{
			rotation=1;
			time += Gdx.graphics.getDeltaTime();
			rotation *= time * temp;
			System.out.println("time " + time);
			System.out.println("rotation " + rotation);
			System.out.println("temp " + temp);
			if(rotation > 360)
			{
				time = 0;
				temp += 10;
			}
			else if(Gdx.input.isKeyPressed(Keys.A))
			{
				rotation -= 4.0f;
				time = 0;
			}
		}

Co cykl zwiększa iloczyn dla zmiennej 'rotation' (bazowa wartość to 50), dzięki czemu tworzy wrażenie płynnego przyspieszania co okrążenie. Dodatkowo dodałem aktywny klawisz 'A' dla zerowania okrążenia.
Ma to sens czy lepiej innym ludziom tego nie pokazywać, bo będą mnie wytykać palcami?