如何在Swift 2中的X轴上随机定位Sprite

时间:2016-06-23 21:28:01

标签: swift sprite-kit arc4random

我想让敌人在X轴上产卵,到目前为止我已经

enemy?.position = CGPoint(x: CGFloat(arc4random_uniform(UInt32(self.frame.width))), y: self.frame.maxY)

这很有用,我想让他们在屏幕上产生并且在x = 0或最大x

上产生时不会被切断

我也试过x: 100 + CGFloat(arc4random_uniform(Uint32(self.frame.width - 100)))

这给我一个错误,如果屏幕的宽度可以说是1000,我如何在100到900之间创建一个随机数,同时还自动查找屏幕的宽度。

我也在使用SpriteKit

3 个答案:

答案 0 :(得分:3)

此示例假设您的场景定位点为0,0

let buffer: UInt32 = 100
let randomX = randomizer(min: buffer, max: UInt32(self.size.width) - buffer)
enemy?.position = CGPoint(x: CGFloat(randomX), y: self.frame.maxY)

func randomizer(min min: UInt32, max: UInt32) -> CGFloat {

   assert(min < max)
   return CGFloat(arc4random_uniform(max - min)  + min)
}

答案 1 :(得分:0)

使用下面的数学运算,您可以获得介于100和帧宽减去100之间的随机数:

var x = 0
var y = 0
var screenScale: CGFloat = UIScreen.mainScreen().scale()

let lower : UInt32 = 100 * Int(screenScale)
let upper : UInt32 = UInt32(self.frame.width - (100 * Int(screenScale)))

x = arc4random_uniform(upper - lower) + lower
y = arc4random_uniform(upper - lower) + lower

enemy?.position = CGPoint(x: x, y: y)

这应该让你的精灵出现在900到100之间。

感谢Brayen Chenthis answer

答案 2 :(得分:0)

System.Linq;