-1

我正在使用基本的 CGRectIntersectsRect 来检测精灵之间的碰撞,如下所示:

if (CGRectIntersectsRect(staff.frame, imgView.frame)) {
    [self playSound];
}

然而,由于staff.frame在 的帧上持续移动imgView.frame,该方法playSound被多次触发 - 与精灵相互覆盖所需的次数一样多 - 导致该playSound方法的播放量过多且不必要。

话虽如此,是否可以将CGRectIntersectsRect方法限制为在破坏检测之前只允许一次碰撞?

4

1 回答 1

0

您可以做的是声明一个BOOL实例变量并使用它在每次碰撞时只播放一次声音。您的代码将是这样的:

if (CGRectIntersectsRect(staff.frame, imgView.frame)) {
    if (!soundPlayed) {
        soundPlayed = YES;
        [self playSound];
    }
}
else {
    soundPlayed = NO;
}

让我知道这是否适合您。

于 2012-07-18T12:04:25.063 回答