0
我的遊戲是一個平臺遊戲,屏幕會跟隨不斷移動到底層的玩家。遊戲每秒都會減慢運動速度,然後再次加速。我將如何阻止這種情況的發生。我已經將德爾塔時間傳遞給了我的世界,但他們並沒有幫助滯後或口吃。由於Libgdx遊戲加速並每秒減速
主要呈現循環
public void update(float dt){
world.step(1/60f, 2, 2);
handleInput(dt);
camX();
player.moveMario();
hud.update();
gameCam.update();
renderer.setView(gameCam);
}
@Override
public void render(float delta) {
update(delta);
Gdx.gl.glClearColor(0, 0, 0, 1);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
renderer.render();
game.batch.setProjectionMatrix(hud.stage.getCamera().combined);
hud.stage.draw();
game.batch.setProjectionMatrix(gameCam.combined);
game.batch.begin();
game.batch.draw(ball, player.b2Body.getPosition().x - MarioBros.RADIUS_CHARACTER/MarioBros.PPM, player.b2Body.getPosition().y - MarioBros.RADIUS_CHARACTER/MarioBros.PPM, 70/MarioBros.PPM, 70/MarioBros.PPM);
mapCreator.createSpikeBalls(map, animation, game.batch);
endOfGame();
game.batch.end();
b2dr.render(world, gameCam.combined);
}
public void camX(){
gameCam.position.x = gamePort.getWorldWidth()/2;
if(player.b2Body.getPosition().x >= gamePort.getWorldWidth()/2){
gameCam.position.x = player.b2Body.getPosition().x;
}
}
角色的移動到右側
public void moveMario(){
if (b2Body.getLinearVelocity().x < 4){
b2Body.applyLinearImpulse(new Vector2(2.7f, 0), b2Body.getWorldCenter(), true);
}
}
我不知道到底是什麼你'w^orld.step()'在做,但是這聽起來像可能需要delta時間的那種函數 – rbennett485