2

CCParticleSystemQuad を使用してパーティクル エフェクトを作成しています。ここで、Cocos2d シーンからの CGRect との衝突をテストしたいと思います。これに似た別の件名をリストし、少し近づいたが、まだ完全な解決策を持っていないので、わずかに異なる件名で再リストした.

私は解決策の半分を持っています。各パーティクルの位置を取得し、衝突をテストすることができます。次に、それぞれが衝突したときの位置を設定したいと思います。現在、CCParticleSystemQuad をサブクラス化し、次のように独自のゲッターを追加しています。

-(tCCParticle*)getQuadParticle:(int)quadIndex
{
    return &particles[quadIndex];
}

次に、Cocos2d シーンで、パーティクルと位置を取得できます。

tCCParticle *particle = [emitter getQuadParticle:i];
CGPoint pos = particle->pos;

これは機能しますが、CCParticleSystemQuad が getQuadParticle に応答しない可能性があることを警告します。これは懸念事項ですが、今やりたいことは、次のような同様の方法でシーンから位置を設定することです。

[emitter setParticlePos:i newPosition:newPos];

ただし、これを行うセッターを自分のシーンから機能させる方法がわかりません。可能であれば、粒子サブクラス内で衝突判定を行いたくありません。

「Cocos2d (iphone) でパーティクルの位置を取得する方法」という同様の性質の別のトピックを開始し、「update」メソッドまたは「updateQuadWithParticle」メソッドをオーバーライドするように言われましたが、これを正確に行う方法がわかりません。

誰かがこれを行う方法の例を見せてくれたら、私はとても感謝しています.

4

1 に答える 1

0

これは機能しますが、CCParticleSystemQuad が getQuadParticle に応答しない可能性があることを警告します。

警告については、エミッタが (通常の CCParticleSystemQuad ではなく) サブクラスから作成されていること、および getter メソッドがインターフェイス (.h ファイル) で宣言され、実装 (.m ファイル) で定義されていることを確認してください。

APIを見ると、メソッドが表示されませんsetParticlePos:newPosition:が、似たようなものがあります。-(void) updateQuadWithParticle:(tCCParticle*)particle newPosition:(CGPoint)pos;

私はそれを使用していませんが、ソースを一目見ただけで、必要なことを実行していることがわかります。

だから多分試してみてください [emitter updateQuadWithParticle:particle newPosition:newPos];

お役に立てば幸いです。

于 2011-08-22T04:52:11.440 に答える