iOS: ограничить CGRectIntersectsRect одним пересечением?
Я использую базовый CGRectIntersectsRect для обнаружения столкновения между спрайтами следующим образом:
if (CGRectIntersectsRect(staff.frame, imgView.frame)) {
[self playSound];
}
Тем не менее, так как staff.frame
движется последовательно по рамке imgView.frame
, метод playSound
срабатывает многократно - столько раз, сколько требуется, чтобы спрайты перекрывали друг друга - вызывая нежелательное и чрезмерное количество воспроизведения с playSound
метод.
При этом возможно ли ограничить CGRectIntersectsRect
способ разрешить только одно столкновение, прежде чем сломать обнаружение?
1 ответ
Что вы могли бы сделать, это объявить BOOL
переменная экземпляра и использовать его для воспроизведения звука только один раз за столкновение. Ваш код будет примерно таким:
if (CGRectIntersectsRect(staff.frame, imgView.frame)) {
if (!soundPlayed) {
soundPlayed = YES;
[self playSound];
}
}
else {
soundPlayed = NO;
}
Дайте мне знать, если это работает для вас.