SWIFTでFlappyBirdのクローンが動かない

この記事は次のブログに引っ越しました。

SWIFTの勉強用FlappyBirdのクローン「FlappySwift」が最新のXcode 6.0.1で動かない場合の修正箇所 Appleが公開したiOS向け新プログラミング言語「SWIFT」。 プログラムの基本である「真似ぶ」ということで、GitHubに公開されている半日くらいでFlappy Birdのクローンが書けたというFlappyBirdのクローン「FlappySwift」を(画面右下の「Download ZIP」より)ダウンロード、OS X Mavericks(10.9.5)のXcode6.0.1でおもむろにコンパイルしたところ、いきなり20個以上のエラーが出ました。 ↓こんなの pipeDown.physicsBody = SKPhysicsBody(rectangleOfSize: pipeDown.size) pipeDown.physicsBody.dynamic = false ! "SKPhysicsBody?" does not have a member named 'dynamic' pipeDown.physicsBody.categoryBitMask = pipeCategory ! "SKPhysicsBody?" does not have a member named 'categoryBitMask' pipeDown.physicsBody.contactTestBitMask = birdCategory ! "SKPhysicsBody?" does not have a member named 'contactTestBitMask' pipePair.addChild(pipeDown) 右も左もわからないなか、泣きそうになったのですが、大きく2点を直したら動きました。 エラー行の"physicsBody"の後ろに「?」を加える 最後のエラー箇所の行は"physicsBody"の後ろに「!」を加える 情報元:Why your Swift apps broke in Xcode 6 beta 7 and the GM versions, and how to fix them(Xcode6β7でSwiftアプリが壊れる) 具体的には下記のように「?」を加えます。 pipeDown.physicsBody = SKPhysicsBody(rectangleOfSize: pipeDown.size) pipeDown.physicsBody?.dynamic = false pipeDown.physicsBody?.categoryBitMask = pipeCategory pipeDown.physicsBody?.contactTestBitMask = birdCategory pipePair.addChild(pipeDown) まずは根性で、これらのエラー箇所に「?」を加えます。すると、一カ所だけエラーが解決されず、下記エラーになるところがあります。 Value of optional type 'CGFloat?' not unwrapped; did you mean to use '!' or '?'? 具体的にはここ override func update(currentTime: CFTimeInterval) { /* Called before each frame is rendered */ bird.zRotation = self.clamp( -1, max: 0.5, value: bird.physicsBody.velocity.dy * ( bird.physicsBody.velocity.dy < 0 ? 0.003 : 0.001 ) ) } 上記を、今度は「!」を下記のように加えて修正します。 override func update(currentTime: CFTimeInterval) { /* Called before each frame is rendered */ bird.zRotation = self.clamp( -1, max: 0.5, value: bird.physicsBody!.velocity.dy * ( bird.physicsBody!.velocity.dy < 0 ? 0.003 : 0.001 ) ) } さぁ、おもむろにコンパイルしてみましょう。実行されましたでしょうか。