2011-09-17 5 views
0

私はこのような矢のシューティングゲームを作っています。すべてが良いです。しかし私は私の矢印を追跡する線を描画する場合、それは素晴らしいことに気づいた。スケジューラで私のゲームにいくつかのコードを書いて、矢印がどこに行くかを描くことになっています。しかし、私はマルチサークルを描く必要があったので、マルチ矢印を撮影するとゲームフレームが良くありません。パフォーマンスが低下することなく多くのCCSpriteを描画する方法は?

他にも良い方法がありますか?私はすでに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]; 
    .......  

答えて

1

私のコードで助けが必要です。ゲームが遅くなる場合は、ゲームの開始時に矢印のプールを作成し、必要に応じてただちにアクションをトリガすることを検討する必要があります。もう表示されない場合は、それを非アクティブに設定し、次に矢印が必要なときに再利用してください。

+0

ああ、私はそれを持っています。私は理解した。ありがとう男:) –

+0

それはあなたの答えを受け入れるのがいいだろう:) –

+0

私はした。ありがとう:) –

0

あなたの問題のような音は矢ではありませんが、私が想像する円はCocosオブジェクトです。あなたは、オブジェクトの代わりにOpenGLコマンドを使ってサークルのテクスチャをスクリーンに直接描画する方法を学ぶ方がよいでしょう。それは多くの助けになるでしょう。

+0

本当ですか?それがうまくいくと思いますか?私は同じことを考えました。しかし、私は不思議に思っていました。 CCSpriteとOpenGLの大きな違いだと思いますか? –

+0

オーバーヘッドが大幅に減ります。円ごとに作成されるオブジェクトはありません.Y座標でXテクスチャを描画するだけです。そして、CCSpriteは最終的にOpenGLを呼び出してとにかくそれを描くことを忘れないでください。あなたは重い仲買人の仲間を切り離しているだけです。さらに、コードを振り返って、フレームごとにサークルを作成しています。それは良くないね。 –

+0

ありがとう、私はCCSpriteの信じられないほどの機能をあきらめることはできません!とにかく、ありがとう、FadeOutのように。 –

0

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

+0

感謝します:)ありがとう、私はそれを修正します。 –

+0

私の喜び。それがあなたのために働く場合、あなたは答えを受け入れる方法を知っている:)あなたの製品との運が良かった。 – YvesLeBorg

関連する問題