基本的なCGRectIntersectsRectを使用して、次のようにスプライト間の衝突を検出しています。
if (CGRectIntersectsRect(staff.frame, imgView.frame)) {
[self playSound];
}
ただし、staff.frameはのフレーム上を一貫して移動しているためimgView.frame、メソッドplaySoundは複数回起動されます(スプライトが相互にオーバーライドするのに必要な回数だけ)、playSoundメソッドからの不要で極端な量の再生が発生します。
そうは言ってもCGRectIntersectsRect、検出を解除する前に1回の衝突のみを許可するようにメソッドを制限することは可能ですか?