0

私はCCSpriteiPhoneの画面の周りを跳ね回ることができるを持っています。このスプライトにはCCParticleSystemQuad、子ノードとしてがあります。パーティクルは、移動するスプライトの後ろをたどる小さな単純な円です。画面の端との衝突によりスプライトが回転するまで、すべてが正常に機能します。これが発生すると、既存のパーティクルが突然奇妙な場所に描画されます。

なぜこれが起こっているのか考えていますか?

私はこれまでにいくつかのことを試しました。まずpositionType、パーティクルシステムの3つの値すべてを試しました。これらのどれも回転の問題を修正しませんでした。実際の回転は。で行われCCRotateToます。このアクションを削除すると、パーティクルの位置の問題が修正されます。CCSpriteしたがって、おそらく子ノードを回転させるとCCLayer、現在のが置き換えられる可能性がありますCCSpritehttp://www.cocos2d-iphone.org/forum/topic/63951を読んでみましたが、少し頭がおかしいです。フィードバックや提案は大歓迎です!

編集#1CCRotateTo簡単な修正を見つけました:後続の助詞にを指示する直前resetSystem。ただし、奇妙な描画動作の原因を理解したいと思います。

4

1 に答える 1

1

これは、CCParticleSystemがCCSpriteの子であるために発生していると思います。スプライトで行う位置または回転は、放出されているすべてのパーティクルの動作に影響を与えます。したがって、画面上にまだ残っている後続のパーティクルがある場合、それらはCCSpriteの子であり、それを回転させると、残っているすべてのパーティクルがスプライトの現在の位置を中心に回転します。

この影響を排除したい場合は、CCParticleSystemをレイヤーに追加して、CCSpriteの回転の影響を受けないようにすることができます。このアプローチの欠点は、CCParticleSystemがCCSpriteの子ではなくなったため、CCParticleSystemにCCSpriteの位置を追跡させるためのコードを追加する必要があることです。ただし、これは非常に簡単です。

于 2012-12-22T10:15:02.857 に答える