插值无效的 Actor 动作 LibGDX

Actor action with Interpolation not working LibGDX

我正在尝试通过插值向演员添加动作,但演员只是传送到没有动画的最终位置

我的 actor class 中有这个方法,我在设置动画的最终位置后调用它:

private fun addMovementAsAction(){
        val action = Actions.action(MoveToAction::class.java)
        action.setStartPosition(initialPosition.x, initialPosition.y)
        action.setPosition(finalPosition.x, finalPosition.y)
        action.duration = 2f
        action.interpolation = Interpolation.linear
        addAction(action)
    }

然后,在我的游戏 class 中,当我单击调用 stage.act() 的按钮时,我调用了一个名为 play() 的方法。当我点击按钮时,演员跳到最终位置,没有任何动画。可能是什么?

state.act() 必须在每次调用 render() 循环时调用。如果你只在点击按钮时调用它,整个舞台大部分时间都会被冻结。如果你在调用它时将 delta 的值传递给 stage.act() 并且该增量是自上次调用它以来的整个经过时间,那么所有动画都会有一个跳跃到考虑所有错过的时间。

其他可能的罪魁祸首:你说,“我在设置动画的最终位置后调用”。如果在添加动画之前将 actor.xactor.y 设置为结束位置,则您已将 actor 传送到该位置,MoveToAction 将无事可做。在动画有机会开始之前在 MoveToAction 上调用 setStartPosition 不会完成任何事情,因为它会在动画开始时自动将 Actor 的当前位置作为开始位置。 setStartPosition() 可能应该被弃用,因为它只有在动画已经开始后调用它才能完成某些事情,为什么你会想要在它已经开始后更改它?