0

我对 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);

球在抛球时的运动与抛球的速度成正比。但是,它会从原始位置跳到最终位置,但我希望它具有连续运动(即看到它在屏幕上移动,而不仅仅是从一个点跳到另一个点)。我该怎么做?fling 是否适合这项任务,还是您会使用其他东西?我猜这可能与帧速率有关,但不确定。

提前致谢!

4

1 回答 1

1

仅当有主动投掷时,您才更新球的位置。您需要在每一帧上对球应用更改(速度)以获得流畅的连续动画。在 Libgdx 中,每帧都会调用render回调,您应该在此处更新对象的状态。

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

于 2013-04-27T06:50:02.643 回答