ユーザーが画面に触れると、スプライトが作成され、ユーザーが指を離すまでドラッグできます。この時点で、スプライトが画面の下部に落ちるように、物理ボディがスプライトにアタッチされます。ただし、スプライトが別のスプライト/ボディと衝突すると、移動できなくなる必要があります。作成されたスプライトと他のボディ/スプライト (作成された壁やその他のもの) との衝突を確認するにはどうすればよいですか?
1945 次
3 に答える
1
AndEngineにはかなり単純な衝突検出が実装されています。方法を参照してくださいcollidesWith(IShape pOtherShape)
誰かがそれを改善して透明な領域で動作するようにし、ピクセルの完全な衝突検出を検索します。
物理エンジンを利用することもできます。センサーを参照してください。
于 2012-06-28T12:09:44.407 に答える
0
面積を計算することはうまくいきましたが、非常に多くの衝突を扱っていたため、より良い方法が必要でした。かなりの時間がかかりましたが、最終的に ContactListener の使用方法を理解しました (これは本当に私が求めていたものでした.初心者???) とにかく、この質問を見る可能性のある他の人への参照として、ContactListener で次のようなコードを使用できます。
public void beginContact(Contact contact) {
if(fillerNum>-1 && contact.getFixtureA().getBody().getUserData()!=null && contact.getFixtureB().getBody().getUserData()!=null){
String x1 = (String) contact.getFixtureA().getBody().getUserData();
String x2 = (String) contact.getFixtureB().getBody().getUserData();
if((x1.equals("fill")&&!x2.equals("dest"))||(x2.equals("fill"))&&!x1.equals("dest")){ //If a filler hits a stationary
//Log.e("Contact",x1 + " " + x2);
createStationaryFiller();
}
if((x1.equals("dest")&&x2.equals("fill"))||(x1.equals("fill")&&x2.equals("dest"))){ //If a destroyer hits a filler
destroyFiller();
}
}
}
成長体を設定してユーザー データ「fill」を設定し、固定体を設定してユーザー データ「stat」を設定します。ユーザーデータ「dest」を持つ他のボディもいくつかありました。このようにして、どの 2 つが衝突し、それに応じて反応するかを確認できます。わからなかったらメッセージください。この種のことに慣れていない人を助けるのに問題はありません。
于 2012-07-01T08:07:42.287 に答える