【问题标题】:Android Studio Libgdx AnimationAndroid Studio Libgdx 动画
【发布时间】:2015-11-20 21:11:36
【问题描述】:

每当我的角色跳跃时,我都会尝试制作动画。它的工作方式如下:当我跳跃时,我首先绘制我的 char 的动画。如果完成,我开始修改他的位置并绘制另一个纹理,用于 inAir 时刻。问题是动画立即运行(我尝试将速度设置为每秒 1 帧,但它仍然立即运行)并且角色在动画完成之前跳跃。我怀疑它认为它在实际完成之前就完成了。这就是我检查动画是否完成的方式:首先我检查动画是否开始(按下跳转按钮),然后我有一个这样的 if 条件:

    if (animationStarted && rightJumpAnim.isAnimationFinished(System.currentTimeMillis()))
{
    animationStarted = false;
    animationFinished = true;
    timePassed1 = 0;
}

在此之后,当他再次接触地面时,我将动画完成设置为 false。有什么建议吗?

附:这是运行 jumpAnimation 的代码:

if (toDrawJumpRight1 == true) {
                    animationStarted = true;
                    timePassed1 += Gdx.graphics.getDeltaTime();
                    spriteBatch.draw(rightJumpAnim.getKeyFrame(timePassed1, false), posX + cameraX, posY + cameraY, sizeX, sizeY);
                }

【问题讨论】:

    标签: android animation libgdx


    【解决方案1】:

    您的问题应该在您提供给我们的第一行:

    if (animationStarted && rightJumpAnim.isAnimationFinished(System.currentTimeMillis()))
    

    你必须传递的参数是动画的STATETIME

    if (animationStarted && rightJumpAnim.isAnimationFinished(timePassed1))
    

    编辑: 关于这个问题的更多信息:

    你说你想要 1 帧停留 1 秒。
    现在我们说,你有大约 5 帧。 5 帧 * 1 秒 = 5 秒完成

    因此,如果 statetime 超过 5 秒,您的动画将播放一次(已完成)
    Animation.isAnimationFinished(float stateTime) 现在检查动画中的当前 stateTime 是否高于 5 秒。

    System.currentTimeMillis 就是此时: 1440618906341

    现在..还有什么更大的?

    祝你有个愉快的夜晚(我建议使用 TimeUtils.millis 而不是 System.currentTimeMillis,我猜它是优化的,当然。)

    【讨论】:

    • 感谢您提供的信息。我理解我的错误。晚上好!
    猜你喜欢
    • 1970-01-01
    • 2023-03-15
    • 1970-01-01
    • 1970-01-01
    • 2016-10-17
    • 2012-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多