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