0

現在割り当てられているフレームの名前を特定のスプライトに伝える方法があるかどうか疑問に思っていました。私がやりたいのは、次のようなifステートメントを持つことです

if(CGRectIntersectsRect([Player1 boundingBox], [Player2 boundingBox] && Player1.frame == Player2.frame){
    //Do something
}else if(CGRectIntersectsRect([Player1 boundingBox], [Player2 boundingBox] && Player1.frame != Player2.frame{
    //Do something else
}

残念ながら、これを行う適切な方法が何であるかはわかりません。現在のスプライトのフレームの実際の名前を取得できますか? すなわち。@"Frame1.png" なので、衝突しているスプライトのフレーム名と比較できますか? また、フレームごとに間違った用語を使用している場合は申し訳ありませんが、スプライト シートからのスプライトの画像のように意味します。spriteWithSpriteFrameName.

4

2 に答える 2

0

それがCCSpriteのプロパティであるかどうかはわかりません。ドキュメントを確認する必要がありますが、これに対する簡単な解決策は、継承を使用してCCSpriteをサブクラス化することです。

必要なプロパティ (imageName プロパティ) を追加し、新しいサブクラス化されたスプライトを使用するように CCSprite の割り当てを変更すると、プロパティにアクセスできるようになります。インポートを忘れないでください。

また、CGRectEqualToRect ( CGRect rect1, CGRect rect2 );同等性をチェックするために使用する必要があります。スプライトによっては、CGRect メソッドが実行しない透明衝突検出を回避するために、正しい衝突検出が必要になる場合があります。

お役に立てれば。

于 2013-08-04T04:12:31.900 に答える
0
CCSpriteFrame* frame = sprite.displayFrame;
NSString* frameName = frame.textureFilename;

ただし、これが個々のフレーム名を返すかどうかはわかりません。アトラス テクスチャのファイル名しか返されない場合は、運が悪いです。フレーム名プロパティを含めるには、CCSpriteFrame コードを変更する必要があります。

于 2013-08-04T07:29:16.133 に答える