2

libgdx と jBox2D を初めて使用します (他の環境で Box2D を使用したことがあります)。

大きな動的ボディと、それが着地するための 2 つの小さな静的ボディを作成しました。私の体は決して触れないようです。代わりに、システムが私の体の間に本当に小さな体を作成しているように見えます...そして私には理由がわかりません!

下の画像の上半分は、進行中の衝突 (右側) と発生しようとしている衝突 (左側、シェーディングされていない形状) を示しています。

下の画像の下半分は、数ステップ後です。大きなシェーディング シェイプが最初の衝突ポイントを中心に回転し、シェーディングされていないシェイプと「衝突」しました。

各衝突の場所には、形状が接触するのを妨げているように見える小さな赤い点があります. これを複数のスケールで試しましたが、結果は似ています。私はこのサイトをグーグルで検索して、同じ問題を抱えている人を探してみましたが、うまくいきませんでした。

jBox2D の不正行為の画像

4

2 に答える 2

1

各ポリゴンには、ドキュメントに記載されている非常に小さな「半径」があります。

    /**
     * The radius of the polygon/edge shape skin. This should not be modified.
     * Making this smaller means polygons will have and insufficient for
     * continuous collision. Making it larger may create artifacts for vertex
     * collision.
     */
    public static float polygonRadius = (2.0f * linearSlop);

定義されたlinearSlopを使用します:

    /**
     * A small length used as a collision and constraint tolerance. Usually it
     * is chosen to be numerically significant, but visually insignificant.
     */
    public static float linearSlop = 0.005f;

したがって、これは、次のいずれかを行いたいことを意味します

  • これに対応するために図面サイズを大きくするか、
  • このスペース (0.02) が目立たないように、座標系を大きくしてください。

2番目をお勧めします。座標系が小さすぎる (または大きすぎる) 場合は、他のパフォーマンスに影響を与える可能性があります。

于 2013-03-11T20:21:03.873 に答える
0

したがって、私が把握できる限り、この状況はポリゴン スキンに関連するマイナーな (しかし重要な) 詳細です。

( http://www.box2d.org/manual.html#_Toc258082970 ... 4.4 の一番下までスクロールします)

ポリゴンの周囲には、相互貫通を防ぐために使用される目に見えないスキンがありますが、このスキンは Box2D デバッグ ビューでは描画されません。ポリゴンとスキンではなく、ポリゴンに対してテクスチャのサイズを変更したため、目に見えるギャップがあります。

簡単に言うと、スキンについては自分で説明する必要があります。

より詳しい情報やより良い説明があれば、ぜひお聞きしたいです! :-)

于 2013-03-11T02:06:37.370 に答える