フレームごとに呼び出されるボディ間の接触をチェックするスケジュールされた機能があります。
特定のCCSprite
との間のタッチを確認したいときはb2body
、まずそれらが画面上に存在するかどうかを確認します。次に、関連する種類のすべてのスプライトで for ループを実行します。したがって、接触を確認したい3匹の犬がいる場合、画面上のすべての犬のスプライトで各フレームを実行する必要があります。問題は、FPS が低下し、ゲームが少しぼやけてしまうことです (スタック フレーム)。
多くのスプライトで接触中に実行し、FPS を落とさないようにするにはどうすればよいですか?
//in my contact check that relevant sprites are exist,than check contact
if([self getChildByTag:1] && [self getChildByTag:300])
{
// run on 10 sprites and check contact
for(int i=0;i<10;i++)
{
if( CGRectIntersectsRect ([[self getChildByTag:300+i] boundingBox], [sprite boundingBox]))
//do something
}
接触がない場合でも、フレームレートで非常に多くの条件を確認したという事実だけで、いくつかのリークが発生します。