我使用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个不同的球,或者只将单个球移动到每个新位置。
答案 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)
这应该避免你以前遇到的问题,希望有所帮助。