對不起,我無法正確說出我的標題,但我會在此處更清晰地解釋我的問題。Box2D以相同的速度移動物體,不管FPS
我正在使用libgdx。
當我想,以便它涵蓋了所有FPS相同的距離,我會做到這一點,以移動紋理:
//...define Player class with x property up here.
Player player = new Player();
int SPEED = 100
public void render() {
player.x += SPEED * Gdx.graphics.getDeltaTime();
}
現在我想知道如何做到這一點會對身體產生相同的效果在box2d中。下面是一個例子(渲染延伸ApplicationAdapter一個類的方法):
public void render() {
//clear screen, ... do other stuff up here.
playerBody.applyForce(new Vector2(0.5f/PIXEL_PER_METER, 0.0f), playerBody.getWorldCenter(), true);
//PIXEL_PER_METER -> applied to scale everything down
//update all bodies
world.step(1/60f, 6, 2);
}
這對playerBody施加力,以便它的加速度增加。與我的第一個例子一樣,我如何製作海岸,身體的行進速度以30fps,10fps,60fps等保持恆定。我知道world.step的timeStep參數是模擬的時間量,但這個值不應該改變。
提前謝謝。
哦:)我認爲時間步參數必須始終具有相同的價值,永遠不會改變? – Nalyd
一些遊戲開發者使用固定的delta(例如1/60)實現步驟邏輯。所以他們確保每一幀都會對遊戲產生相同的影響。對於多人遊戲的實現來說,我認爲它仍然是 – cokceken
,對於在較慢的機器上運行遊戲的人來說,這不會造成巨大的劣勢嗎? – Nalyd