あなたが尋ねるかもしれないいくつかの異なることがあります。あなたの質問は解釈が少し難しいですが、可能な解釈ごとに可能な解釈を行ってみます。
スプライトが同じ場所にあるかどうかを確認する
AndEngine で zindex 値が異なる場合、2 つのスプライトが同じ場所に配置されているかどうかを識別するにはどうすればよいですか?
それがあなたの件名です。少し違うことを尋ねていると思いますが、それがすべての質問である場合は、次のように X と Y を比較して Z を無視することができます。
if (sprite1.getX() == sprite2.getX() && sprite1.getX() == sprit2.getY()) return true;
スプライトが重なっているかどうかを確認する
もちろん、左上隅が同じポイントに配置されているかどうかとは異なり、「同じ場所」とは別のことを意味する場合があります。たとえば、2 つのスプライトが正確に同じ XY に配置されているかどうかに関係なく、2 つのスプライトがオーバーラップしているかどうかを知りたい場合があります。その場合、衝突検出を行いたいのですが、衝突を処理する方法は複数あります (たとえば、ピクセル パーフェクトな衝突テストが必要ですか?)。いずれにせよ、これはピクセルパーフェクトな衝突を検出する良い例です。もっと簡単なことをしたい場合は、各スプライトのバウンディング ボックス Rect を取得し、android.graphics.Rect で intersect() メソッドを使用できます。
タッチ イベントの処理
あなたの質問の本文では、次のように尋ねていますが、何か違うことをしているようです:
スプライトの識別に onAreatouchlistener を使用し、タイルとスプライト 1 に zvalue 0 を指定しましたが、onAreaTouchListener はスプライトを識別せず、タイルのみを識別します。ユーザーが特定の場所に触れたときの両方の値を知りたい
onAreaTouchListener は「スプライトを識別」せず、タッチイベントをリッスンするため、今は混乱しています。私の推測では、あなたが求めているのは、スプライトとその下にある別のスプライトの両方に touchEvents を使用する方法です。
タッチエリアを登録する
最初に: 両方のスプライトのハンドラーを登録していることを確認してください。つまり、次のようなものです。
this.mScene.registerTouchArea(sprite);
OnTouch() によって返されるブール値を使用する
touchevent が伝搬されていない場合は、onTouch() によって返されるブール値を確認する必要があります。そのブール値は、ハンドラーがイベントを消費したかどうか、またはイベントを通過させる必要があるかどうかを示すために使用されます。
タッチ トラバーサルの順序を確認する
また、scene.setOnAreaTouchTraversalFrontToBack() と scene.setOnAreaTouchTraversalBackToFront() をいじって、両方がタッチ イベントを受信していて問題が伝播しているかどうか、または問題がスプライトの 1 つでハンドラーを登録していないかどうかを確認することもできます。 .
AreaBinding を確認する
Finally, take a look at scene.setTouchAreaBindingEnabled(true). You mentioned in the comments you were having problem with the "TouchUp" event in particular. This might be the result of having touchareabinding set to false. Essentially what toucharea binding does is it allows the touch area to look at and receive touch events outside its toucharea. So if a finger goes down inside the area and goes up outside (and binding is off) it will not receive the touch up event. If binding is on, it will still receive the touch event.