2017-04-26 8 views
1

私は現在、クラスで作成しているスペースインベーダーゲームのエイリアンを生成しようとしています。私は与えられた変数値に配列を調整するカウンタでwhileループを使用しています。このようにして、私は何も書き直すことなく宇宙人の数を増やすことができます。問題は、私のエイリアンが生まれても、xポジションが増えていないからです。私はスクリーン上に1人のエイリアンしか見ることができないので、それらはすべて産卵していると結論づけられましたが、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の位置を設定する必要があります。現在、各エイリアンのxの位置にdisplayLoopCounterを追加するだけです。 displayLoopCounterは一度に1つずつしか増加しないので、エイリアンはすべて1ピクセルの差異で互いにスポーンされます。より大きな差が必要な場合は、displayLoopCounterに意図した間隔を掛けて、各エイリアンの間隔を取得する必要があります。

あなただけ(のようなIntCGFLoatまたはDouble)数値型とspacingBetweenAliens変数を設定して、この行を変更することができます。これに

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

:、

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

この道をエイリアンは、spacingBetweenAliensの値でピクセル間で生成されます。

+0

ありがとう!これは大きな助けとなりました! –

関連する問題