スクロールボックス2D DebugDraw


7

私はBox2D(JavaScript実装-Box2DWeb)を使用してゲームを開発しています。デバッグドローをパンする方法を知りたいのですが。私の通常の答えは知っています-デバッグ描画を使用しないでください、それはデバッグのためだけです。私はそうではありませんが、すべてのオブジェクトが同じ画面上にあるわけではありません。それらが物理表現のどこにあるのかを確認したいと思います。

デバッグ図面をパンするにはどうすればよいですか?

デバッグ描画の要素を見るとわかるように、は左上に表示されていますが、世界のごく一部しか表示されていません。

Box2Dデバッグ描画は左上にあります これが私の意味の例です:http :
//onedayitwillmake.com/ChuClone/

ゲームはオープンソースです。もしあなたが突き抜けて、おそらく私が明らかに間違っていることをしていることに注意したい場合は、https
//github.com/onedayitwillmake/ChuClone

これが、b2DebugDrawビューをスクロールするために今使用しているハックな方法です。b2DebugDrawにプロパティoffsetXとoffsetYを追加しました。 ここに画像の説明を入力してください


最終的に、使用していた実装にoffsetX / offsetYプロパティを追加しました。情報は、(一番下)ここで見つけることができますgithub.com/onedayitwillmake/ChuClone/blob/master/js/lib/...
onedayitwillmake

理想的ではない、それゆえに賞金!
onedayitwillmake '07 / 07/04

私は同じ問題を解決するために遊んでいます。:BOX2D私はここのコードで運を持っていたためにstackoverflow.com/questions/12340965/...
フィリップ・

回答:


1

私は自分でこの質問をしましたが、答えは非常に簡単です。デバッグ描画コンテキストを翻訳するだけです。

        debugDraw.SetDrawScale( camera.scaleWorldToScreen ); //My camera is doing the worldToScreen/screenToWorld conversion, so it has the scales.

        debugCtx.save();
        debugCtx.clearRect( 0, 0, debugCanvas.width, debugCanvas.height );
        debugCtx.translate( camera.position[0], camera.position[1] ); //translate it to the camera position
        debugCtx.scale( 1, -1 ); //invert the y coord.
        world.DrawDebugData();
        debugCtx.restore();

1

これがあなたのケースに当てはまるかどうかはわかりませんが、box2dのC ++実装は、いくつかのクラスにレンダリングジョブを要求します。そのため、box2dにオブジェクトの描画方法を指示するクラスを提供する必要があります。debugdrawクラスの指定されたすべてのbox2dデータを手動で埋め込むことができます。


2
または、事前にglTranslate(または同等のもの)を使用して、より単純な(またはストックの)DebugDrawerを使用することもできます。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.