1

次の方法で PhysicsWorld を作成します。

this.mPhysicsWorld = new FixedStepPhysicsWorld(30, new Vector2(0, 0), false, 8, 1);

そして、次の方法で行を作成します。

final Line line = new Line(object.getX(), object.getY(),object.getX()+object.getWidth(), object.getY()+object.getHeight());
final FixtureDef lineFixtureDef = PhysicsFactory.createFixtureDef(0, 0, 1f);
PhysicsFactory.createLineBody(this.mPhysicsWorld, line, lineFixtureDef);
line.setVisible(true);
mScene.attachChild(line);   

これにより、1 ピクセル バーでの衝突が可能になりますが、目的の効果が得られません。バーの下には少なくともいくつかのピクセルがあり、左側にはいくつかのピクセルがあり、高さと右側は問題ありません。

これを長方形でもテストしましたが、同じ問題が発生しています。

4

2 に答える 2

0

これらの問題がある場合は、次のことを確認してください。

画像を確認してください。エッジの周りにアクセス アルファ ピクセルがありますか?

アニメーション化されたスプライトの場合、スプライト シートのスプライトの列と行の間にどのくらいのギャップがありますか? - 余剰がある場合、これらのアルファ ギャップは、画像が「分割」されるときに含まれる可能性があります。

また、ボックスボディを使用している場合、スプライト自体は何ですか? ボールの場合はサークル ボディを使用し、形状が不規則でより正確な衝突が必要な場合はポリゴン ボディを使用します。

喜んでお手伝いします。

于 2013-02-23T16:32:33.723 に答える
0

あなたが言っているのは、ラインが間違った場所にレンダリングされているということです。オブジェクトの位置からラインの位置を取得しています。私の推測では、線が「オブジェクト」の中心からレンダリングされることを期待していますが、代わりにオブジェクトの左上隅からレンダリングされています。これは、AndEngine で期待され、望ましい動作です。中心からレンダリングする場合は、X と Y を取得するだけでなく、オブジェクトの中心位置を計算する必要があります。

これに関連して、おそらくピクセル単位ではなく、シーン座標で考える必要があります。「ピクセル」と言うときは、それをシーン座標の省略形として使用していると思いますが、そうでない場合は、同じものではないことに注意してください。

于 2013-02-22T22:54:40.920 に答える