cocos2d проверка столкновения - PullRequest
0 голосов
/ 15 марта 2011

Я хочу проверить столкновение птиц и рыб.

У меня есть BirdCache, который содержит

-(void) isBirdCollidingWithRect:(CGRect) rect

которые проверяют каждую видимую птицу в тайнике

-(void) update:(ccTime) delta

, который вызывает isFishCollidingWithRect для проверки каждой птицы, если YES, bird.visible = NO

и FishCache (аналогично BirdCache)

но в результате рыба никогда не умирает при столкновении. (Я устанавливаю visible = NO в обоих обновлениях

Я думаю, что проблема в гоночном состоянии, когда сначала bird.visible = NO, тогда рыба не столкнется с птицей. затем я попытался schedule:selector(delayedInvisible) interval: 1.0 / 10.0f, но все равно не получилось.

Есть ли какой-нибудь общий подход к такого рода проблемам?

1 Ответ

0 голосов
/ 15 марта 2011

Итак, эта работа такова:

  • за каждую живую птицу, если вы проверите сталкивается с любой рыбой, и если она ты убиваешь птицу
  • для каждой живой рыбы вы проверяете, сталкивается ли она с какой-либо птицей, и если она ты убиваешь рыбу

То есть, если птица сталкивается с рыбой, погибает только птица.

Вы должны убить оба сталкивающихся объекта в каждом методе или добавить поле для птиц и рыб, которое говорит (это животное должно быть убито в следующем кадре), и установить это при столкновении, а не в видимом поле напрямую.

...