0

Box2D 横スクロール ゲームを作成する場合、次のコード スナップのように、すべてのオブジェクトをスクロールして (x 軸などで) 移動すると、パフォーマンスが向上しますか?

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

また、レンダリングについても疑問に思っていました。すべてのボディのすべてのテクスチャをレンダリングすると、レベル全体を一度にレンダリングすることになり、貴重な FPS に多くのコストがかかることになります。

4

1 に答える 1

3

これは良い方法だというコメントとは対照的に、私はそうは思いません。

ワールド内のすべてのエンティティを移動するのは直感的ではありません。実生活で森の中を走り回ると、周りの木も動かず、あなただけが動きます。

を使用してOrthographicCamera、その位置を変更します。を介してレンダリングする場合SpriteBatch、すべてのボディをその位置に正確に描画し (おそらく METER_TO_PIXEL 倍率で)、 で使用spriteBatch.setProjectionMatrix(camera.combined)しますSpriteBatch。この方法では、カメラの変換によって非表示のボディがすべて取り除かれるため、表示されているボディのみが自動的に描画されます。

もう 1 つのヒント: を避けるようにしてくださいBody.setTransform()。代わりに、線形速度を設定するか、ボディに力/トルクを適用してみてください。setTransform基本的にテレポートのようなものであり、奇妙な効果や私の場合はバグにつながる可能性があるため、使用すると非物理的な動作が発生します。

于 2014-05-15T17:47:36.983 に答える