2017-04-26 60 views
1

我目前正在嘗試爲我在課堂上創建的太空入侵者遊戲產卵外星人。我正在使用計數器的while循環將數組調整爲給定的變量值。這樣我就可以在不重寫任何文字的情況下增加外星人的數量。問題是,雖然我的外星人產卵了,但是x位置並沒有像我希望的那樣增加。我只在屏幕上看到一個外星人,所以我得出結論,他們都在產卵,但只有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

RayWenderlich.com上有一個很棒的教程,展示瞭如何製作一個類似太空侵略者的遊戲。這可能對你有益! https://www.raywenderlich.com/124005/make-game-like-space-invaders-sprite-kit-swift-tutorial-part-1 – naturaln0va

回答

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

+0

謝謝!這是一個很大的幫助! –