我需要一些帮助(呃)。我想在 cocos2d 中为我的游戏生成一个随机的 Y 位置。
所以情况是这样的:游戏每 0.2 秒生成一个平台。iPhone / iPad 处于横向模式。平台出现在屏幕右侧(x 大于宽度,以便平台出现在屏幕之外)并开始使用 向屏幕左端移动CCMoveTo
。我为每个平台选择一个随机 Y。问题是我不想在另一个平台之上生成一个平台。这意味着我需要制作一个不是“已经采取”的 randY。到目前为止我尝试过的代码是这样的:
//this is a part of code from my addPlatform function. This part in particular cares for the generation of my Y coordinate.
int randY = arc4random() % (int)(3 * (winSize.height/4)); //This prevents to spawn a Y larger than 3/4 of the screen
//here I would like to loop long enough to find a good Y
while (![self isGoodPlatformY:randY])
{
randY = arc4random() % (int)(3 * (winSize.height/4));
}
下一部分是我的isGoodPlatformY
功能
- (bool)isGoodPlatformY:(int)platY
{
CGSize winSize = [[CCDirector sharedDirector] winSize];
int padding = 100;
bool ok = true;
for (CCSprite *body in [self children])
{
if (body.tag > platformBody)
{
if (body.position.x < (winSize.width - padding))
{
if (abs(body.position.y - platY) < 20)
{
ok = false;
}
}
}
}
return ok;
}
我遍历所有标签比我的平台更大的主体。我有不同类型的平台,我使用标签将它们分开。如果身体是一个平台,我首先检查 X 坐标。如果平台足够远(填充),我可以在该确切点生成一个新平台,以便检查下一个平台。如果不是,我想检查那个平台的 Y。如果在这种情况下 Y 坐标小于 20 像素,我必须找到一个新的 Y,这就是为什么将 bool 设置为 false 并在 for 循环之后返回它。我知道不需要那些花括号,但我正在测试其他一些东西,这就是我把它们放在那里的原因。
这似乎不起作用。希望我清楚自己想要完成什么。您的任何帮助将不胜感激。希望我没有错过太新手风格的东西:)
我用其他语言标记了这个问题,因为这个问题可能“无处不在”。