Swift 在两个位置之间随机生成一个SKSpriteNode

Swift 在两个位置之间随机生成一个SKSpriteNode,swift,random,skspritenode,cgpoint,Swift,Random,Skspritenode,Cgpoint,我正在努力研究如何在Swift中在两个位置(位于屏幕上)之间随机生成一个SKSpriteNode 这就是我想到的,但它确实会在屏幕尺寸之外生成节点,尽管我在屏幕边界内定义了两个点 /* Spawning Values */ var MinSpawnValue = self.size.width / 8 var MaxSpawnValue = self.size.width - self.size.width / 8 var SpawnPosition = UInt32(MaxSpawnValue

我正在努力研究如何在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
maxsawnvalue
1004
,那么
SpawnPosition
将是
4
,您将生成一个范围
0…3
的数字。通过将该数字添加到
MinSpawnValue
,您将得到一个范围为
1000…1003

的数字,变量名实际上应该以小写字母开头。请注意,上面突出显示的语法很混乱,将变量名显示为蓝色,因为它认为它们是类名。谢谢!回答得很好,速度也很快!不客气!您的问题是一个关于堆栈溢出的完美问题的示例。它说明了正在发生的事情,您希望发生的事情,包括显示努力的相关代码,有相关的标签,以及明确说明的标题。就是这样做的!要是能像你一样清楚地回答更多的问题就好了。