在两个位置之间随机生成一个 SKSpriteNode
Spawn a SKSpriteNode between two positions randomly
我正在尝试研究如何在 Swift 中的两个位置(位于屏幕上)之间随机生成 SKSpriteNode
。
这是我的想法,但它确实会在屏幕尺寸之外生成节点,尽管我在屏幕边界内定义了两个点!
/* Spawning Values */
var MinSpawnValue = self.size.width / 8
var MaxSpawnValue = self.size.width - self.size.width / 8
var SpawnPosition = UInt32(MaxSpawnValue - MinSpawnValue)
/* Node Positioning */
Node.position = CGPointMake(CGFloat(arc4random_uniform(SpawnPosition)),CGRectGetMidY(self.frame))
您只需将您的随机值添加到 MinSpawnValue
。这可能需要对类型进行一些调整:
Node.position = CGPointMake(CGFloat(arc4random_uniform(SpawnPosition)) + MinSpawnValue,CGRectGetMidY(self.frame))
我发现使用实际数字更容易思考此类问题。例如,如果 MinSpawnValue
是 1000
,MaxSpawnValue
是 1004
,那么 SpawnPosition
将是 4
,您将生成一个范围内的数字0...3
。通过将该数字添加到 MinSpawnValue
,您将获得 1000...1003
.
范围内的数字
我正在尝试研究如何在 Swift 中的两个位置(位于屏幕上)之间随机生成 SKSpriteNode
。
这是我的想法,但它确实会在屏幕尺寸之外生成节点,尽管我在屏幕边界内定义了两个点!
/* Spawning Values */
var MinSpawnValue = self.size.width / 8
var MaxSpawnValue = self.size.width - self.size.width / 8
var SpawnPosition = UInt32(MaxSpawnValue - MinSpawnValue)
/* Node Positioning */
Node.position = CGPointMake(CGFloat(arc4random_uniform(SpawnPosition)),CGRectGetMidY(self.frame))
您只需将您的随机值添加到 MinSpawnValue
。这可能需要对类型进行一些调整:
Node.position = CGPointMake(CGFloat(arc4random_uniform(SpawnPosition)) + MinSpawnValue,CGRectGetMidY(self.frame))
我发现使用实际数字更容易思考此类问题。例如,如果 MinSpawnValue
是 1000
,MaxSpawnValue
是 1004
,那么 SpawnPosition
将是 4
,您将生成一个范围内的数字0...3
。通过将该数字添加到 MinSpawnValue
,您将获得 1000...1003
.