Страницы

Поиск по вопросам

вторник, 16 июля 2019 г.

Libgdx плавный поворот/вращение физического тела на определенный угол

Хочу поворачивать физическое тело на определенный угол, но никак не выходит, использую конструкцию
rotateToAction = new RotateToAction(); rotateToAction.setRotation(90); rotateToAction.setDuration(5f); player.addAction(rotateToAction);
внутри метода touchDown, сам метод вызывается, я проверил в логах, но визуальных изменений никаких не наблюдаю. можете подсказать, что делаю не так и где ошибся?


Ответ

Это норма, если вы неправильно переопределили метод draw() для своего "Актёра" player, у меня тоже был такой затык когда-то. Дело в том, что в методе draw() вашего актёра нужно использовать не короткую конструкцию SpriteBatch.draw() с 4-мя параметрами, а есть более длинная конструкция, там можно задать и параметры масштабирования и т.п., вот её вам и нужно задать и правильно передавать параметры, тогда и анимация будет работать. Вот конструкция SpriteBatch.draw(Texture texture, float x, float y, float originX, float originY, float width, float height, float scaleX, float scaleY, float rotation, int srcX, int srcY, int srcWidth, int srcHeight, boolean flipX, boolean flipY) Вот ссылка. Только чтобы вы не задавали вопрос в будущем по поводу повторного использования анимации вам необходимо после каждого завершения анимации обновлять её, а именно в вашем случае объект rotateToAction методом reset() или restart(), уже точно не помню, вот ссылка на обновление анимации. Также будет полезным знать о том, когда же анимация завершилась, для этого есть метод, который позволяет отслеживать завершение анимации, но на эту тему уже сами поищите

Комментариев нет:

Отправить комментарий