krembrule2016
@krembrule2016

Почему спрайт дергается?

Всем привет!

Написал функцию, которая вычисляет координаты спрайта, который движется по окружности.
Ну, формула элементарная
x = x0 + R* cos (t*a+a0)
y = y0 + R *sin (t*a+a0)
Функция выглядит так
public void pointDefinition(float delta){
		sprite.setPosition(Gdx.graphics.getWidth()/2+(85*(float)Math.cos(i*delta)), Gdx.graphics.getHeight()/2+(85*(float)Math.sin(i*delta)));
		i = i + 0.5;
	}

Её вызываю в render()
В итоге все работает, но спрайт как-то нервно подергивается. Чяднт?
Вот видео, которое демонстрирует эту вакханалию.
https://drive.google.com/file/d/19Dfedd8dczft5PV3R...
  • Вопрос задан
  • 262 просмотра
Решения вопроса 1
krembrule2016
@krembrule2016 Автор вопроса
И так, ответ был на поверхности
Нужно было всего лишь не умножать delta на i, а прибавлять его
Как говорится, "спасибо stackoverflow за мою карьеру"(с)
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;
}
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@Warlodya
https://docs.oracle.com/javase/7/docs/api/java/lan...

Интуиция подсказывает, что это поможет.

public void pointDefinition(float delta){
float angle = Math,ToRadians(i*delta);
sprite.setPosition(Gdx.graphics.getWidth()/2+(85*(float)Math.cos(angle)), Gdx.graphics.getHeight()/2+(85*(float)Math.sin(angle)));
i = i + 0.5;
}
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
Bell Integrator Ульяновск
До 400 000 ₽
Bell Integrator Хабаровск
До 400 000 ₽
Bell Integrator Ижевск
До 400 000 ₽