2
我正在從UIKit移植到Cocos2d的2D遊戲。它的一個部分,它設置了五個不同的正方形框架,看起來像這樣,當我用的UIKit:Cocos2d CGRect邏輯
- (void)setFrames {
[playerSquare setCenter:CGPointMake(160, 240)];
for(int iii = 0; iii < [squares count]; iii++) {
int randX = arc4random() % 321;
int randY = arc4random() % 481;
[(UIButton*)[squares objectAtIndex:iii] setFrame:CGRectMake(randX, randY, [(UIButton*)[squares objectAtIndex:iii] frame].size.width, [(UIButton*)[squares objectAtIndex:iii] frame].size.height)];
CGRect playerRect = CGRectMake(80, 160, 160, 160);
for(UIButton* b in squares) {
if((CGRectIntersectsRect(b.frame, [(UIButton*)[squares objectAtIndex:iii] frame]) && ![b isEqual:[squares objectAtIndex:iii]])) {
//make sure no two squares touch
iii--;
break;
} else if(CGRectIntersectsRect(playerRect, [(UIButton*)[squares objectAtIndex:iii] frame])) {
//no square is close to center of the screen
iii--;
break;
} else if(!CGRectContainsRect(CGRectMake(10, 10, 300, 460), [(UIButton*)[squares objectAtIndex:iii] frame])) {
//no square is close to the edges of the screen
iii--;
break;
}
}
}
}
到目前爲止,我已經嘗試實現在cocos2d同樣的事情:
- (void)setFrames {
for(int idx = 0; idx < [squares count]; idx--) {
int randX = arc4random() % 321;
int randY = arc4random() % 481;
[(CCSprite*)[squares objectAtIndex:idx] setPosition:ccp(randX, randY)];
CGRect playerRect = CGRectMake(80, 160, 160, 160);
for(CCSprite* b in squares) {
if((CGRectIntersectsRect(b.boundingBox, [(CCSprite*)[squares objectAtIndex:idx] boundingBox]) && ![b isEqual:[squares objectAtIndex:idx]])) {
//make sure no two squares touch
idx--;
break;
} else if(CGRectIntersectsRect(playerRect, [(CCSprite*)[squares objectAtIndex:idx] boundingBox])) {
//no square is close to center of the screen
idx--;
break;
} else if(!CGRectContainsRect(CGRectMake(10, 10, 300, 460), [(CCSprite*)[squares objectAtIndex:idx] boundingBox])) {
//no square is close to the edges of the screen
idx--;
break;
}
}
}
}
但是這種修改方法不起作用。其中一個方塊被放置在適當的位置,但其他四個總是在cocos2d點0,0處產生(屏幕的左下角)任何人都可以指向正確的方向嗎?
什麼是randX randY座標?我想他們對於4個精靈中的3個幾乎不會是0,0,所以我只能想象你在其他地方再次改變位置。 – LearnCocos2D 2011-12-29 20:45:37
再次查看for循環聲明:)它將全部變得清晰。 – 2011-12-29 21:22:48