swift - 使用 for 循环显示 4 个纹理

标签 swift for-loop sprite-kit swift2

我正在使用 Swift 2.0Sprite-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/

相关文章:

ios - 如何用swift制作单选按钮?

c - 我正在尝试创建一个数组并用 1 到 10 之间的数字填充它。为什么它不起作用?

PHP 会更改循环的范围并在包含的文件中进行切换

python - 在每个 for 循环迭代中遍历列表

swift - 让用户选择按钮具有哪个图像?

ios - 为什么我们不能在swiftUI预览中传递实例变量?

ios - 表格 View 帮助…..从一个表格 View 中选择的单元格 swift 传递到另一个表格 View

swift - 永远移动 Sprite

ios - 改变现有粒子的方向

ios - SKNode接触其他SKNode识别