0

鳥と魚の衝突を確認したい。

私は含むを持ってBirdCacheいます

-(void) isBirdCollidingWithRect:(CGRect) rect

キャッシュ内のすべての目に見える鳥をチェックします

-(void) update:(ccTime) delta

の場合、isFishCollidingWithRectすべての鳥をテストする呼び出しYESbird.visible = NO

FishCache(に似ていBirdCacheます)

しかしその結果、衝突しても魚が死ぬことはありません。(私はvisible = NO両方の更新で設定します

bird.visible = NO問題は、最初に魚が鳥に衝突しないときのレース状態だと思います。それから私はしようとしましschedule:selector(delayedInvisible) interval: 1.0 / 10.0fたが、それでも失敗しました。

この種の問題に対する一般的なアプローチはありますか?

4

1 に答える 1

0

したがって、この作業は次のようになります。

  • 生きているすべての鳥について、魚と衝突するかどうかを確認し、衝突した場合は鳥を殺します
  • 生きている魚ごとに、鳥と衝突するかどうかを確認し、衝突した場合は魚を殺します

したがって、鳥が魚と衝突すると、鳥だけが殺されます。

各メソッドで衝突する両方のオブジェクトを殺すか、鳥と魚にフィールドを追加して (この動物は次のフレームで殺される必要があります)、可視フィールドではなく、衝突でこれを設定する必要があります。

于 2011-03-15T07:50:01.247 に答える