子供の頃、スプライトAにスプライトBを追加しました。
[spriteA addChild:spriteB];
私のゲームロジックは、spriteBがタッチされたかどうかに基づいています。しかし、spriteBにタッチを検出させることができませんでした。
touchLocationをnodeSpaceに変換しました。spriteAでタッチを問題なく検出できます。
私が使用するif条件は
if (CGRectContainsPoint(spriteB.boundingBox, touchLocation))
誰かが私に方向を示すことができれば、それは甘いでしょう。
それが重要な場合は、spriteAがspriteBatchNodeに追加されます。
前もって感謝します!
アップデート:
子供が実際にタッチを検出していると思います。それが機能しなかった理由は、ダーティタグが設定されているためです。
要するに、これが私のゲームの仕組みです。いくつかの皮から飛び出るターゲット..そしてプレーヤーはポイントを獲得するためにターゲットに触れます。
異なる場所にターゲットを保持するためのアレイがいくつかあります。そして、各ターゲットにダーティタグを設定しました。ターゲット
がポップするときはtarget.dirty = TRUE、非表示にするときはtarget.dirty =FALSE
これは、ポップする場合はクリック可能と同等です。非表示の背後にある場合は、クリックできません。
だから私がif-conditionに入る直前
if (CGRectContainsPoint(curTarget.boundingBox, touchLocation))
私はこれを持っています
if(curTarget.dirty == FALSE) continue;
私の問題は、上記の状態をチェックすると、タッチが検出されないことです。しかし、上記の状態を取り除くと、すべてのタッチを検出できますが、問題は逆になります。つまり、見えなくてもターゲットをクリックしてください。
代わりに、レイヤーの子としてターゲットスプライトを追加すると、上記のロジックが機能します...
ヘルプ!