我现在明白了。你没有打开垂直同步。
注意:垂直同步将帧速率限制为显示器刷新率(通常为 60fps)。
哦,最大/最小更新间隔以毫秒为单位。
所以下面的例子让游戏变得非常迟钝:
app.setVSync(true); // Turn VSync
app.setMaximumLogicUpdateInterval(200); // Max. 200 miliseconds can pass
app.setMinimumLogicUpdateInterval(100); // Min. 100 miliseconds must pass
所以我认为你必须围绕数字进行调整以使其达到最佳状态。
但是,这不是你需要的:D
我看到了:
player_X = player_X + velocityX;
player_Y = player_Y + velocityY;
所以这是你的代码,用来更新玩家的位置。您必须使用增量编号。
public void update(GameContainer gc, int delta)
如您所见,delta 是一个预定义的整数。增量包含两次更新之间经过的时间。因此,在此之后,您应该将所有内容与 delta 相乘。
检查这个:
player_X += velocityX * delta;
player_Y += velocityY * delta;
// The '+=' means player_X = player_X + something (if you did not know)
注意:如果玩家在更改后移动缓慢,则只需将其乘以如下数字:
player_X += velocityX * delta * 1.5f;
player_Y += velocityY * delta * 1.5f;
例子:
Runnable Jar
MainComponent.java
GameState.java
这是一个自制的快速简单的例子。试试看,尝尝源代码:D
哦,这个距离计算方法让玩家颤抖。