我正在尝试为我正在课堂上创作的太空入侵者游戏产生外星人。我正在使用带有计数器的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
}
答案 0 :(得分:3)
你只需要改变你在外星人之间设置的间距。换句话说,您需要设置每个外星精灵的x
位置以使它们之间有更多的间距。目前,您只是将displayLoopCounter
添加到每个外星人的x
位置。由于displayLoopCounter
一次只增加一个,因此外星人产生的彼此之间的差异为1像素。如果我们想要更大的差异,我们需要将displayLoopCounter
乘以我们预期的间距,以便我们得到每个外星人之间的间距。
您只需使用数字类型设置spacingBetweenAliens
变量(例如Int
或CGFLoat
或Double
)并更改此行:
aliens[displayLoopCounter].position.x = CGFloat(displayLoopCounter + 25)
对此:
let basePosition = displayLoopCounter * spacingBetweenAliens
aliens[displayLoopCounter].position.x = CGFloat(basePosition + 25)
这样,外星人将会产生spacingBetweenAliens
的值,以像素为单位。