#libgdx
#libgdx
Вопрос:
Что мне нужно исправить, чтобы одно нажатие клавиши воспроизводило один полный цикл анимации?
Создание объекта анимации:
jojoStandSummonTextureAtlasRight = new TextureAtlas(Gdx.files.internal("jojo/stand_summon/right/jojo_stand_summon.atlas"));
jojoStandSummonAnimationRight = new Animation<TextureRegion>(1 / 3f, jojoStandSummonTextureAtlasRight.getRegions());
Рендеринг анимации:
if(Gdx.input.isKeyJustPressed(E) amp;amp; lastKeyInput == RIGHT){
sb.draw(jojo.jojoStandSummonAnimationRight.getKeyFrame(elapsedTime, false), jojo.getPosition().x, jojo.getPosition().y);
lastKeyInput = RIGHT;
}
Комментарии:
1. Вам нужно будет установить логическое значение или изменить переменную состояния, которая отслеживает, какая анимация должна воспроизводиться для конкретного игрового объекта, и нарисовать ее на основе этого.
Ответ №1:
Класс анимации, предоставляемый LibGDX, включает функцию .isAnimationFinished() . Это вернет логическое значение, указывающее, когда анимация закончила воспроизведение.
В вашем случае, я предполагаю, что вы обновляете свою переменную elapsedTime в своей функции update() . Итак, вы можете сделать что-то вроде:
if(!jojoStandSummonAnimationRight.isAnimationFinished()) {
elapsed_time = Gdx.graphics.getDeltaTime();
} else {
// animation is finished
}