Game Maker Language リファレンス > 組み込み関数 用途別 > 物理エンジン > physics_world_draw_debug()
この関数は、ルームの物理世界システムの表現を描画して、物理シーンを正しく機能させるのに問題がある場合のデバッグに役立ちます。 ゲームのレンダリング部分に問題がある場合があります。たとえば、スプライトが間違った位置または回転で描画され、物理が正しくないように見える場合や、計算が正しくない場合があります。 いずれにせよ、この関数は、物理システムで何が起こっているかを描画することにより、問題を見つけて解決するのに役立ちます。 これを行うには、システムのどの部分を描画するかを指定する必要があります。これは、さまざまな「フラグ」定数に格納されているビットから作成された値を渡すことによって行われます。
引数の種類 | 詳細 |
phy_debug_render_aabb | ルーム軸に関連する各フィクスチャの絶対バウンディングボックスを表示します |
phy_debug_render_collision_pairs | 現在衝突しているフィクスチャが表示されます |
phy_debug_render_coms | ルーム内の各フィクスチャの重心を表示します |
phy_debug_render_core_shapes | ルーム内のフィクスチャを構成する基本的な形状を表示します |
phy_debug_render_joints | ルーム内のすべてのフィクスチャの各ジョイントが描画されます |
phy_debug_render_obb | ルーム内のフィクスチャの相対的な境界ボックスを表示します |
phy_debug_render_shapes | ルーム内のフィクスチャを構成する実際の形状を表示します |
したがって、これらのオプションのいずれか2つを描画するには、それらの2つでビット単位の「または」(GameMaker Studio 2ではこれは "|" (パイプ記号) で表されます)を実行し、関数が使用する結果の変数を格納する必要があります。 これは、重心と部屋のすべての器具のジョイントのみを描画する関数で使用する変数を設定する方法の例です。
flag = phy_debug_render_coms | phy_debug_render_shapes;
上記フラグを設定して実行すると以下の通りとなります。
上記のコードでわかるように、画面には形状と重心のみが描画されます(また、それらの状態を表す色も表示されます。詳細については、オンラインのBox 2Dドキュメントを確認してください)。 同じように、デバッグしたい定数をさらに、またはすべて表示することができます...それらをすべて一緒に「または」表示するだけです。 さらにもう1つ注意する必要があります。この関数は、デバッグする深度よりも浅いインスタンスの描画イベントでのみ呼び出す必要があります。そうしないと、デバッグ情報を表示できません。
physics_world_draw_debug(flag)
flag = phy_debug_render_aabb | phy_debug_render_collision_pairs | phy_debug_render_obb; physics_world_draw_debug(flag);
上記のコードは、現在の物理システム内で衝突しているすべての絶対境界ボックス、相対境界ボックス、およびフィクスチャを描画します。