我使用基本的CGRectIntersectsRect来检测sprite之间的碰撞,如下所示:
if (CGRectIntersectsRect(staff.frame, imgView.frame)) {
[self playSound];
}
但是,由于staff.frame
在imgView.frame
的框架内持续移动,因此方法playSound
会多次触发 - 与精灵相互覆盖的次数相同 - 从playSound
方法导致不必要的极端回放。
话虽如此,是否可以将CGRectIntersectsRect
方法限制为仅在允许一次碰撞之前进行检测?
答案 0 :(得分:0)
您可以做的是声明一个BOOL
实例变量并使用它仅在每次碰撞时播放一次声音。您的代码将是这样的:
if (CGRectIntersectsRect(staff.frame, imgView.frame)) {
if (!soundPlayed) {
soundPlayed = YES;
[self playSound];
}
}
else {
soundPlayed = NO;
}
请告诉我这是否适合您。