我正在使用Swift 2.0
和Sprite-Kit
与Xcode7
创建一款游戏。我想实现4个紫色的球,它们看起来像生命。所以每次玩家被击中,他就失去一个紫色的球。它们应该是并排出现的。我想知道,如果不是硬编码4个球到现场,我可以使用for loop
来显示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循环中有一个off - 1错误。应该是小于号而不是小于等于号。您当前的代码将创建五个紫球。
你不应该让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)
这样可以避免您之前遇到的问题,希望对您有所帮助。