使用arc4Random设置sprite垂直位置的限制

时间:2015-08-30 06:06:54

标签: ios swift sprite-kit arc4random

我正在构建我的第一个2D平台游戏,我希望使用arc4Random为每隔几秒生成的对象设置一些限制。

目前,一只鸟会从右向左飞过屏幕,大部分时间鸟儿都会在空中飞行,但有时鸟类在地面上看起来很奇怪。

我想做的是设定鸟类产生的最小和最大高度,这可能吗?

以下是一些代码......

func spawnBird() {
    var birdP = SKNode()
    birdP.position = CGPointMake( self.frame.size.width + birdTexture1.size().width * 2, 0 );
    birdP.zPosition = -10;
    var height = UInt32( self.frame.size.height / 1 )
    var y = arc4random() % height;
    var bird1 = SKSpriteNode(texture: birdTexture1)
    //Code Removed

birds.addChild(birdP)

2 个答案:

答案 0 :(得分:4)

您可以设置最小和最大高度:

var height_max = UInt32( self.frame.size.height )
var height_min = UInt32( 20 )
var bird_range = arc4random_uniform(height_max - height_min + 1) + height_min;

替代方法:

var bird_range = (arc4random() % (height_max - height_min) + 1) + height_min;

方法图:

enter image description here

使用最大/最小高度的两个从未低于20,您使用的原始方法经常会点击0

答案 1 :(得分:1)

这是标准问题。

int randomInIntRange(int minVal, int maxVal) {
    return minVal+arc4random_uniform(maxVal-minVal+1);
}


CGFloat randomInFloatRange(CGFloat minVal, CGFloat maxVal) {
    return minVal+(maxVal-minVal)*(arc4random()/(double)(UINT32_MAX));
}