Как мне получить полный цикл анимации за одно нажатие клавиши?

#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
}