在Objective-C中生成对象之间的约束随机距离
我正在做一个游戏,玩家在不同高度的平台上移动,每个平台之间的距离不同。因为我希望游戏每次都不一样,所以我编写了代码来自动生成玩家传递到玩家前面某个位置的ice在Objective-C中生成对象之间的约束随机距离,objective-c,xcode,Objective C,Xcode,我正在做一个游戏,玩家在不同高度的平台上移动,每个平台之间的距离不同。因为我希望游戏每次都不一样,所以我编写了代码来自动生成玩家传递到玩家前面某个位置的ice float viewHeight = self.view.bounds.size.height; float fViewHeightMinusIceHeight = viewHeight – 55.0f; int iViewHeightMinusIceHeight = (int)fViewHeightMinusIceHeight; if
float viewHeight = self.view.bounds.size.height;
float fViewHeightMinusIceHeight = viewHeight – 55.0f;
int iViewHeightMinusIceHeight = (int)fViewHeightMinusIceHeight;
if (ice.center.x >= (self.view.bounds.size.width + 8))
{
float y = random() %iViewHeightMinusIceHeight;
y = y + 22.5f;
float x = (random() % 20) – 8;
ice.center = CGPointMake(x,y);
}
这只是其中一个对象。相同的代码用于ice1、ice2等
这样就可以很好地生成对象。第一个问题是,我想将可能性限制在合理的结果上,例如,没有巨大的差距,这样玩家就可以从一个对象移动到另一个对象
第二个问题是,有时对象会相互叠加生成。对于您的范围来说,简单的最小值/最大值似乎是理想的。大意是:
#define kMinDistanceBetween 10
#define kMaxDistanceBetween 20
int variance = kMaxDistanceBetween - kMinDistanceBetween;
float xPosition = (float)(kMinDistanceBetween + arc4random_uniform(variance));
arc4random_uniform在您传递的上限内返回一个随机整数。因此,您只需根据设置的最小/最大规则,将X位置设置为最小+随机数量。我将其设置为defines,以便您可以在一个地方修改规则。您必须强制转换为浮点,因为arc4random_uniform返回一个int。的可能重复请看我的回答:为什么使用宏而不是常量?我认为任何一种方法都可以,只是注意它应该以某种方式参数化,而不是硬编码。