使用libgdx for Android进行连续运动

时间:2013-04-26 23:31:54

标签: android libgdx gesture motion

我对libgdx很新,我正试图在屏幕上进行投掷动作时使用手势在屏幕上移动球。我做了这个手势听众:

class MyGestureListener implements GestureListener {
    public boolean fling(float velocityX, float velocityY, int button) {
        if (Math.abs(velocityY) > 0) {
            ballPositionY -= velocityY*Gdx.graphics.getDeltaTime();
        }
        return false;
    }   
}

我在create()中为监听器初始化了一个探测器,并在render()中使用了以下球形图像:

batch.draw(ballImage, ballPositionX, ballPositionY);

球随着投掷的速度成比例地移动。但是,它会从屏幕的原始位置跳到最终位置,但是我希望它能够连续运动(即看到它在屏幕上移动而不是从一个点跳到另一个点)。我该怎么做?是否适用于此任务,或者您是否会使用其他东西?我猜这可能与帧速率有关,但我不确定。

提前致谢!

1 个答案:

答案 0 :(得分:1)

你只是在积极投掷时更新球的位置。您需要在每个帧上对球应用更改(速度)以获得平滑连续动画。在Libgdx中,每帧都调用render callback,您应该更新对象的状态。

在“fling”回调中你应该存储新的速度,然后在每次调用你的render回调时你应该根据速度和自上次渲染以来经过的时间来改变球的位置( Gdx.graphics.getDeltaTime())。