我想让敌人在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
答案 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之间。
答案 2 :(得分:0)
System.Linq;