使用for循环显示4个纹理

时间:2015-10-01 16:08:45

标签: swift for-loop sprite-kit swift2

我使用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)
}

这里我得到一个错误:二进制运算符不能应用于类型&#39; CGFloat&#39;的操作数。和&#39; Double&#39; 我是否必须将i转换为CGFloat?并且这段代码实际上会并排放置4个不同的球,或者只将单个球移动到每个新位置。

1 个答案:

答案 0 :(得分:0)

你的代码在for循环中有一个错误。它应该是一个小于符号而不是小于或等于。您当前的代码将创建五个紫色球。

你不应该让我相等,只是一个令人困惑的整数。你可以像这样重写代码,它会做同样的事情,而不用担心你目前得到的浮动/双重错误。请注意,我还将使用一个名为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)

这应该避免你以前遇到的问题,希望有所帮助。