libGDX 在最后一帧停止动画

libGDX stop animation at last frame

我有 class 扩展了 Actor。我的动画在带有 stateTime 计时器的 'act' 方法中。以下是此 class 的片段:

@Override
public void act(float delta) {
    super.act(delta);
    stateTime += delta;

    if(!isDeath) {

       ...

    } else {
        if(!animationDead.isAnimationFinished(stateTime)){
            textureRegion = animationDead.getKeyFrame(stateTime, true);
        }

    }
}

animationDead 有 PLAYMODE.NORMAL

我正在尝试使用“!animationDead.isAnimationFinished(stateTime)”,但它会在第一帧后停止我的动画。我想在最后一帧后停止动画。

我也在尝试设置 stateTime = 0;但一样,在第一帧后停止。

我遇到的情况与我按下 SPACE 键时的情况相同,我的 'actor' 应该播放战斗动画。但是对于所有战斗动画帧,我必须按住 space 键。点击一下space就是一帧动画

这是此方法的片段:

@Override
public void act(float delta) {
    super.act(delta);
    stateTime += delta;

    if(!isAttacking()) {
    ...

    /* Keyboard events */
    ...
    setAttacking(false);

    if (Gdx.input.isKeyPressed(Input.Keys.SPACE)) {
        setAttacking(true);
        if (moveToRight) {
            textureRegion = animationAttack.getKeyFrame(stateTime,true);
        } else if (!moveToRight) {
            isPlayerFlippedToLeft = true;
            textureRegion = animationAttack.getKeyFrame(stateTime,true);
        }
        setPlayerWidthAndHeight();
    }

当你在 Animation 上调用 animationDead.getKeyFrame(stateTime, true); 方法时,Animation's 模式会根据当前的动画模式转换为 PlayMode.LOOPPlayMode.LOOP_REVERSED

PlayMode.NORMAL -> PlayMode.LOOP

PlayMode.REVERSED -> PlayMode.LOOP_REVERSED

isAnimationFinished(stateTime) return 如果 不循环播放 .

动画将结束则为真

你为什么不打电话给animationAttack.getKeyFrame(stateTime);

编辑

好的,现在您正在使用 animationAttack.getKeyFrame(stateTime);

您正在为三个不同的 Animation 使用相同的 stateTime,当需要显示 animationDeadstateTime 交叉动画 frameduration 和当时isAnimationFinished(stateTime)return真的所以

if(!animationDead.isAnimationFinished(stateTime)){  //condition false
   textureRegion = animationDead.getKeyFrame(stateTime); 
}

最终 textureRegion 没有死 TextureRegion 帧。