-2

私は SpriteKit でゲームを作成しています。このゲームにはスポーンするプラットフォームがあり、宝石やコインなどのオブジェクトがスポーンされたときにプラットフォーム上でスポーンする可能性があるようにしたいと考えています。

ランダムにする必要があり、生成するものを選択できるようにする必要があります (宝石またはコインのいずれか)。

何か案は?

4

1 に答える 1

1

スタック オーバーフローを正しく使用するには、常に何らかのコードを投稿する必要があります。あなたが彼らにあなたのために仕事をしてもらいたいだけなら、人々は助けてくれません。

最善の方法は、プラットフォームをサブクラス化することです。これがその背後にある基本的な考え方です。

 enum PlatformObject: Int {
     case Gem = 0
     case Coin
 }

 class Platform: SKSpriteNode {

     init (size: CGSize, color: SKColor, objectType: PlatformObject, spawnObjectRandomly: Bool) { // create your own init for your needs
         super.init (texture: nil, color: color, size: size)

         // set up platform properties

         // Than spawn object
         if spawnObjectRandomly {
               spawnRandomObject()
         } else if objectType == .Coin {
               spawnCoin()
         } else if objectType == .Gem {
               spawnGem()
         }
    }

    required init?(coder aDecoder: NSCoder) {
         fatalError("init(coder:) has not been implemented")
    }

    func spawnRandomObject() {
       let randomNumber = Int(arc4random() % 2)  // 0 and 1
       if randomNumber == 0 {
          // spawn gem
          spawnGem()
       } else {
          // spawn coin
          spawnCoin()
       }
   }

   func spawnCoin() {
       let coin = SKSpriteNode(...
   }

   func spawnGem() {
       let gem = SKSpriteNode(...
   }
}

あなたのシーンよりも、プラットフォームをそのようにスポーンします

  class GameScene: SKScene {
      let size = // set your size
      let color = // set color

      let platform1 = Platform(size: size, color: color, objectType: .Gem, spawnObjectRandomly: false) 
      ...
      // if false will spawn selected objectType ("Gem" in this example)


      let platform2 = Platform(size: size, color: color, objectType: .Gem, spawnObjectRandomly: true) 
     // if true will spawn random object regardless of objectType settings
      ...
 }

お役に立てれば

于 2016-01-14T12:20:24.823 に答える