我正在使用 Swift 2.0
和 Sprite-Kit
以及 Xcode7
创建游戏。我想实现 4 个紫色的球,它们应该类似于生命。因此,每次玩家被击中,他都会失去一个紫色球。他们应该并排出现。我想知道是否可以使用 for 循环
来显示 4 个球,而不是将 4 个球硬编码到场景中。
let purpleBall = SKSpriteNode(texture: purpleTexture)
purpleBall.position = CGPointMake(self.frame.size.width * 0.65, self.frame.size.height * 0.92)
self.addChild(purpleBall)
我还没有成功让 4 个球出现在场景中。这是我的尝试之一。
for(var i = 0.50; i <= 0.90; i = i + 0.10) {
let purpleBall = SKSpriteNode(texture: purpleTexture)
purpleBall.position = CGPointMake(self.frame.size.width * i, self.frame.size.height * 0.92)
self.addChild(purpleBall)
}
这里出现错误:二元运算符无法应用于“CGFloat”和“Double”类型的操作数
我必须将 i
转换为 CGFloat 吗?这段代码实际上会并排放置 4 个不同的球,还是仅将单个球移动到每个新位置。
最佳答案
您的代码在 for 循环中存在差一错误。它应该是一个小于号而不是小于或等于。您当前的代码将创建五个个紫色球。
你不应该让 i 等于除了整数之外的任何东西,这会令人困惑。您可以像这样重写代码,它会做同样的事情,而不必担心您当前遇到的 float/double 错误。请注意,我还将使用一个名为 maxBalls 和 distanceBetweenBalls 的常量,以便您可以轻松更改球的数量和距离,而无需进行任何复杂的重写:
let maxBalls = 4
for(var i = 0; i < maxBalls; i++) {
let purpleBall = SKSpriteNode(texture: purpleTexture)
let ballXPosition = .50 + (i * .1)
purpleBall.position = CGPointMake(self.frame.size.width * ballXPosition, self.frame.size.height * 0.92)
self.addChild(purpleBall)
这应该可以避免您之前遇到的问题,希望有所帮助。
关于swift - 使用 for 循环显示 4 个纹理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32892153/