在太空侵略者中产生精灵

时间:2017-04-26 17:36:34

标签: ios swift sprite-kit

我正在尝试为我正在课堂上创作的太空入侵者游戏产生外星人。我正在使用带有计数器的while循环来将数组调整为给定的变量值。这样我可以增加外星人的数量,而无需重写。问题是,虽然我的外星人产生了,但x位置并没有像我希望的那样增加。我只在屏幕上看到一个Alien,所以我得出的结论是它们都是产卵的,但只有1像素差异,因此不明显。这是我到目前为止所提供的任何帮助都将非常感谢!

//Add and display given amount of aliens...
    while (alienAmount > displayLoopCounter) {
        aliens.append(SKSpriteNode(texture: SKTexture(imageNamed: "ClassicAlien")))
        self.addChild(aliens[displayLoopCounter])
        //Location
        aliens[displayLoopCounter].position.y = CGFloat(-15)
        aliens[displayLoopCounter].position.x = CGFloat(displayLoopCounter + 25)
        print(aliens[displayLoopCounter].position.x)
        displayLoopCounter += 1
        print(displayLoopCounter)
       //Have we run out of aliens yet?
        if displayLoopCounter > alienAmount {
            displayAliens = false
}

1 个答案:

答案 0 :(得分:3)

你只需要改变你在外星人之间设置的间距。换句话说,您需要设置每个外星精灵的x位置以使它们之间有更多的间距。目前,您只是将displayLoopCounter添加到每个外星人的x位置。由于displayLoopCounter一次只增加一个,因此外星人产生的彼此之间的差异为1像素。如果我们想要更大的差异,我们需要将displayLoopCounter乘以我们预期的间距,以便我们得到每个外星人之间的间距。

您只需使用数字类型设置spacingBetweenAliens变量(例如IntCGFLoatDouble)并更改此行:

aliens[displayLoopCounter].position.x = CGFloat(displayLoopCounter + 25)

对此:

let basePosition = displayLoopCounter * spacingBetweenAliens
aliens[displayLoopCounter].position.x = CGFloat(basePosition + 25)

这样,外星人将会产生spacingBetweenAliens的值,以像素为单位。