Sidescrolling Box2D游戏

时间:2014-05-15 15:19:55

标签: libgdx box2d side-scroller

创建Box2D sidescroller游戏时,滚动浏览每个对象并移动它(例如通过x轴)是否性能友好,就像在下面的代码中一样:

for(Body b: bodies) {
    b.setTransform(-1, b.getPosition().y, b.getAngle());
}

我也想知道渲染,如果我在每个物体上渲染每个纹理,我会立刻渲染整个水平,这将花费我很多宝贵的FPS。

1 个答案:

答案 0 :(得分:3)

与评论相反,这是一个很好的方法,我不这么认为。

移动世界上的每个实体并不直观。当你在现实生活中穿过森林时,树木也不会在你身边移动,只有你移动。

使用OrthographicCamera并更改其位置。通过SpriteBatch渲染时,将所有实体精确地绘制在它们所在的位置(可能具有一些METER_TO_PIXEL缩放因子)并在spriteBatch.setProjectionMatrix(camera.combined)上使用SpriteBatch。这样只会自动绘制可见实体,因为相机转换将消除所有不可见的实体。

另一个提示:尽量避免Body.setTransform()。而是尝试设置线速度或在主体上施加力/扭矩。使用setTransform导致非物理行为,因为它基本上像传送,可能会导致奇怪的效果,在我的情况下甚至会导致错误。