0

そんな矢撃ゲームを作っています。すべてが良いです。でも、矢印をなぞって線を引くといいなと思いました。だから私は、矢印が行くところに円を描くことになっている私のスケジューラーの私のゲームにいくつかのコードを置きました。でも、たくさんの円を描く必要があったので、マルチアローを撮るときのゲームフレームは良くありません。

他にもっと良い方法はありますか?私はすでにCCSpriteBatchNode、plist、CCSpriteFrameCacheを使用しています。私はできる限りのことをしました。助けが必要ですどうもありがとう

これは私のコードです

...............
    [self schedule:@selector(CollisionDetection:)];
}


- (void)CollisionDetection:(ccTime)dt 
{
    for (CCSprite *arrow in arrows->arrowsArray) 
    {
            CCSprite *track = [CCSprite spriteWithSpriteFrameName:@"WhiteCircle.png"];
            [track setPosition:arrow.position];
            [arrows->rootLayer->arrowsSheet addChild:track];

            id delete = [CCFadeOut actionWithDuration:1.0];
            id deleteAction= [CCSequence actions:delete ,[CCCallFuncN actionWithTarget:self selector:@selector(spriteActionFinished:)], nil];
            [track runAction:deleteAction];
    .......    
4

3 に答える 3

1

オブジェクトの割り当ては大きなオーバーヘッドです。ゲームの実行速度が遅くなる場合は、ゲームの開始時に矢印のプールを作成し、必要なときにすぐにアクションをトリガーすることを検討する必要があります。表示されなくなった場合は、非アクティブに設定して、次に矢印が必要になったときに再利用します。

于 2011-09-17T10:14:41.537 に答える
0

あなたの問題は矢印ではないように聞こえますが、私が想像する円もココスのオブジェクトです。オブジェクトの代わりにopenglコマンドを使用して、円のテクスチャを画面に直接描画する方法を学ぶことをお勧めします。それは大いに役立ちます。

于 2011-09-17T21:53:28.143 に答える
0

タイムクリティカルなアニメーションがある場合は、CCCallFunc(N)を避けてください。これは、スケジューラーをかなりの時間停止させる可能性があるためです。私があなたのコードを読んでいると、スケジュールされた間隔ごとにCallFuncがあります...うーん。スケジューラーなしでこれを実行しようとしましたか?つまり、すべてのアニメーションを一度にパッケージ化して開始し、最後に1つのCallFuncを使用しますか?スケジュールされた間隔の一部として位置を変更する代わりに、トラッキングアニメーションと同時に実行するCCMoveToを使用します。

于 2011-09-18T17:12:51.467 に答える