/ / Android AndEngine 2つの円の衝突-Android、andengine、衝突検出

Android AndEngineの2つの円の衝突は完全に - アンドロイド、エンジン、衝突検出

Android AndEngineの2つの円の衝突が完全に。私は持っています two circlecollision method 彼らのために、私は彼らが欲しいとき それぞれに触れる その他 collision 起こる、 現在 それらが互いに近づくと衝突が発生します。

私はそれが原因だと思う transparent free space 各円の.pngファイル内。

ここに画像の説明を入力

写真では、彼らが遠くから衝突していることがわかります。両方がお互いに触れたときに欲しいです。

私の衝突方法:

                            if (circle1.collidesWith(circle)){
Score += 1;
}

回答:

回答№1は1

pngの透明な場所がそれを引き起こすことは、あなたが正しいとほぼ確信しています。あなたはおそらくBoxBodyを作成しています。あなたの場合、次のような円の本体を使用する必要があります。

Body circleBody = PhysicsFactory.createCircleBody(pWorld, pSprite, BodyType.StaticBody, FixtureDef);

役に立たない場合は、ボディの位置とサイズを指定できるオーバーロードメソッドがあります。シーンにアタッチするだけでよいDebugRenderを使用することをお勧めします。

new DebugRenderer(physicsWorld, vbom)

これを使用すると、次のように役立つことがわかります。

PS。あなたは私たちに多くの情報を提供しませんでしたが、contactListenerを使用してコリジョンをチェックする必要があります。

PS2。 Box2D拡張機能を使用しない場合は、実行してください。 これはAndEngineの優れた機能であり、それを自分で実装するのは無意味です。Box2Dなしで2つのオブジェクトの円形状の衝突を検出することは困難です。


回答№2の場合は1

Box2dにいない場合は、使用する必要があります Pixel-Perfect Collisionライブラリ。まあデフォルトのAndEngineライブラリ、ピクセル完璧な衝突をサポートしていません。このサポートを取得するには、Eclipseでこのライブラリをインポートし、プロジェクト使用ライブラリに追加する必要があります。

ここでは、このライブラリの使用方法を示します。スプライトのテクスチャとアトラスを定義するとき、次のように記述します。

 private BitmapTextureAtlas lifeAtlas;
public PixelPerfectTiledTextureRegion life_Texture;

PixelPerfectTextureRegionFactory.setAssetBasePath("gfx/game/");

lifeAtlas = new BitmapTextureAtlas(textureManager, 1280, 128,
TextureOptions.BILINEAR);

life_Texture = PixelPerfectTextureRegionFactory.createTiledFromAsset(
lifeAtlas, activity, "heart_tiled.png", 0, 0, 10, 1, 0);

lifeAtlas.load();

カスタムスプライトクラスの場合、

public class Plane extends PixelPerfectAnimatedSprite {

public Plane(float pX, float pY,
PixelPerfectTiledTextureRegion pTiledTextureRegion,
VertexBufferObjectManager pVertexBufferObjectManager) {

super(pX, pY, pTiledTextureRegion, pVertexBufferObjectManager);
setColor(Color.GREEN);
}

}

また、AndEngineライブラリを使用するには、いくつかの調整が必要です。従う この 行くスレッド。