2011-03-15 23 views
0

鳥や魚の衝突をチェックしたい。cocos2dチェック衝突

私はキャッシュに

YES場合、すべての鳥をテストするために isFishCollidingWithRectを呼び出し
-(void) update:(ccTime) delta 

をすべての目に見える鳥をチェック

-(void) isBirdCollidingWithRect:(CGRect) rect 

bird.visible = NO

とAが含まれているBirdCacheを持っていますFishCacheBirdCacheと同様)

しかし、その結果、魚は衝突すると死ぬことはありません。 (私は両方の更新

visible = NOを設定しない私はその後、私はschedule:selector(delayedInvisible) interval: 1.0/10.0fしようとしたが、それでも失敗した。bird.visible = NOは最初、その後、魚は鳥と衝突することはありませんときに問題が条件にレースをされると思います。

いずれかがあります?そのようなこの種の問題に共通のアプローチ

答えて

0

だから、この作品:すべての住んでいる鳥用

  • あなたはそれどんな魚 衝突かどうかを確認し、それならば がない、あなたはそれがどんな鳥と衝突するかどうかをチェックすべての生活魚鳥
  • を殺し、そしてそれは がない場合、あなたは鳥が魚に衝突した場合だけそう鳥が殺された魚

を殺します。

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

+0

(この動物は次のフレームで死に至らなければならない)鳥や魚にフィールドを追加し、これを直接視野ではなく衝突時に設定します。はい、私は1/10秒後に呼び出されるdelayedInvisibleメソッドを持っています。 inside delayedInvisible私はスケジュールを取り直しました:まず_cmdを設定してから、不可視を設定してください – John

+0

私はマルチスレッドなしでやっています。あなたは、各フレームのすべての魚や鳥をループする方法がありますか? – ajuc

+0

あなたの解決策は働いた!私はちょうど[fish gotHit]に真を返す前にさせた。しかし私はまだ私の元の方法がうまくいかなかった理由を知りたい。それはシングルスレッドです。はい、isFish/BirdCollidingWithRectで、私はすべての魚/鳥 – John