5

背景が透明な画像があります。画像のエッジを見つけて、アウトラインからポリゴンを形成したい。これを行うには、複数の方法/方法があります。私はJavaでそれをやりたいです(衝突検出にJBox2d Polygonsを使用している私のゲーム用です)。

私はこれについていくつかの考えを持っていて、これがどのように機能するかを考えています. すべての透明ピクセルを検出してから、選択を反転し、隣接する透明ピクセルが 1 つあるピクセルのみを選択することができます。これはすべて非常に複雑であり、いくつかのガイダンスが必要です。

4

2 に答える 2

1

これは、ピクセルパーフェクトな衝突を作成するというあなたの質問に対する答えではありませんが、画像に応じてフィクスチャを作成することは悪い考えだと言いたいです。

  • Box2Dは凹型フィクスチャをサポートしていません。
  • Box2D(C ++の元のバージョン、これがJBox2Dでどのように機能するかはわかりません)には、ポリゴンごとに8つの頂点に制限があります。

これらの2つの理由により、ピクセルごとに1つの正方形のフィクスチャを作成することを考えるかもしれませんが、それは処理時間で非常に高価になります。

ほぼ完成したゲームでは、レベルエディタを使用してフィクスチャを定義しています。
これが私のレベル(xml)の1つの抜粋です:

<body id="STONE" depth="13" angle="0.000000" type="static" x="7.939437" y="0.750494" tags=""  >
    <image id="stone_img" img="IMG_STONE" depth="0" x="-0.362081" y="0.526663" w="1.400000" h="1.600000" angle="0.000000" colorize="ffffffff"/>
    <fixture id="" density="1.000000" friction="0.300000" restitution="0.300000" sensor="false" shape="rect" x="-0.188671" y="0.806253" w="1.000000" h="2.200000" angle="0.545597" tags="" />
    <fixture id="" density="1.000000" friction="0.300000" restitution="0.300000" sensor="false" shape="rect" x="0.412080" y="-0.097607" w="1.000000" h="2.200000" angle="0.000000" tags="" />
</body>

これがBox2Dを操作する最良の方法だと思います。
うまくいけば、これはあなたにインスピレーションを与えます:D

于 2011-08-15T10:21:54.090 に答える