Вы должны увеличить i
на delta
вместо использования delta
в качестве параметра в формуле:
public void pointDefinition(float delta)
{
sprite.setPosition((Gdx.graphics.getWidth() / 2) + (85 * (float)Math.cos(i)), (Gdx.graphics.getHeight() / 2) + (85 * (float)Math.sin(i)));
i = i + delta;
}
В конце концов, delta
будет каждый раз иметь разные значения, что иногда заставляет ваш маленький значок двигаться назад.
Чтобы понять, что происходит, представьте две эти итерации:
Первая итерация
i
= 2
delta
= 0.0025
В этом случае i * delta
будет 0.005
.
Вторая итерация
i
= 2.5
delta
= 0.0017
В этом случае i * delta
будет 0.00425
.
Как видите, значение i * delta
, которое вы используете в качестве параметра Math.sin()
и Math.cos()
, уменьшилось во второй итерации, вызывая дрожание вашего значка.
Чтобы обеспечить согласованность анимации, важно убедиться, что параметр, передаваемый этим двум функциям (Math.sin()
и Math.cos()
), увеличивается только с каждой итерацией!