0

子供の頃、スプライト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;

私の問題は、上記の状態をチェックすると、タッチが検出されないことです。しかし、上記の状態を取り除くと、すべてのタッチを検出できますが、問題は逆になります。つまり、見えなくてもターゲットをクリックしてください。

代わりに、レイヤーの子としてターゲットスプライトを追加すると、上記のロジックが機能します...

ヘルプ!

4

0 に答える 0