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

标签 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 - 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))

我发现使用实际数字更容易思考此类问题。例如,如果 MinSpawnValue1000MaxSpawnValue1004,则 SpawnPosition 将为 4,您将生成一个 0...3 范围内的数字。通过将该数字添加到 MinSpawnValue,您将获得 1000...1003 范围内的数字。

关于swift - 在两个位置之间随机生成一个 SKSpriteNode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31771661/

相关文章:

javascript - 如何自动随机化 46 个名称以在 Google 表格中创建 46 x 6 唯一行和列?

java - 随机数问题

ios - SKAction.moveToX 重复值更改

ios - 如何在 Swift 中以编程方式使用主扬声器

ios - 如何在函数外声明具有结构数组的变量

ios - 从字典获取字符串时应用程序崩溃 (swift)

ios - 使用 `UIActivityItemSource` 协议(protocol)无法分享到 Instagram

php - 在 php 中随机排列数组并没有真正随机排列数组

ios - SpriteKit : How to call a function within a SKAction. 序列?

ios - 调整大小时如何调整适合SKSpriteNode内部的子节点?