2012-02-13 8 views
0

Cocos2Dコレクションの検出を試して、いくつか質問があります。まず、いくつかの背景:Cocos2D:ループからオブジェクトCGRectにアクセス

これは私のゲームに新しいアイテムを追加するための私の方法です。私のゲームレイヤとは異なるクラスにあります。これは私の項目クラスに位置しています:私は衝突を検出したい場合は

[ItemManager addItem:@"box.png" :itemList];  

-(void) addItem:(NSString *) theFileName: (NSMutableArray *) theArray{ 

     CCSprite *item = [CCSprite spriteWithFile:theFileName 
              rect:CGRectMake(0, 0, 50, 50)]; 

     //Positions 


     int minX = 160; 
     int maxX = 360; 
     int xRange = maxX - minX; 
     int xCord = (arc4random() % xRange) + minX; 


     item.position = ccp(xCord, -5); 

    [self addChild:item]; 

    [theArray addObject:item]; 

は、その後、私はItemManagerと呼ばれるアイテムのクラスへの参照を使用して、私のゲームの層で、このメソッドを使用します2つのスプライトの間、この場合はボックスなどで、addItemメソッドで作成されたボックス矩形を使用できるようにする必要があります。

for(CCSprite *newItem in itemList){ 
//(if box rectangle collides with my players or whatever 

} 

元の方法ですべての方法で作成した矩形にどうやってアクセスできますか?

ありがとうございます。この場合

答えて

0

、私は衝突検出のためにCCSpriteのバウンディングボックスプロパティを使用することをお勧めします:

例:

for(CCSprite *newItem in itemList) 
{ 
    // if box rectangle collides with my players or whatever 
    if (CGRectContainsRect([newItem boundingBox], [player boundingBox])) 
     // do something 
} 
+0

オーケーを、動作しているようです、ありがとうの男!もしスプライトが実際にその周りに矩形を持っていればそれが重要かどうか分かりますか? boudingBoxは数えられた矩形を取りますか? – Alouette

+0

あなたは大歓迎です:) mmあなたの質問をよく理解していません。あなたはそれを言い換えたり、具体的な例を挙げてみることができますか?もう少し詳しく説明すると、このboundingBoxは基本的にスプライトの周りの軸に沿った境界の矩形にすぎません。このバウンディングボックスをよりよく視覚化するには、cocos2dフォルダのccConfig.hにアクセスし、#define CC_SPRITE_DEBUG_DRAW 1を設定します。 –

+0

ああ、すごい素晴らしい機能です! (デバッグ目的の場合)。まあ、私の質問は実際にboudingBoxが引き出されたときに答えられました。もう一度ありがとう、ありがとう! – Alouette

関連する問題