連載
SwiftのSpriteKitで実装―タワーディフェンスゲームの大枠の作り方とコツ:iOS SDKとSwiftで始めるゲーム作成入門(2)(2/3 ページ)
iPhoneゲームをSwift言語で作成してみたいという初心者向けにiOSのゲームフレームワークを使った作り方を一から解説する入門連載。今回は、一般的な「タワーディフェンス」ゲームのルールにのっとりゲームの大枠を作る。衝突判定のphysicsBodyの使い方なども解説。
素材を表示して動かしてみる
画面に敵を表示してみる
続いて、画面に敵を表示してみます。
GameSceneの先頭とdidMoveToViewの最後に下の処理を追加します。これは敵を画面に表示する処理です(7〜8行目)。
class GameScene: SKScene { let enemy = SKSpriteNode(imageNamed: "Enemy") override func didMoveToView(view: SKView) { // …略 enemy.position = CGPoint(x:50, y:300) addChild(enemy) } }
これで画面に敵が表示されました。
敵を移動する
次に敵がゴールに向かって移動する処理を書いていきます。今回は右端をゴールだと仮定して、敵はゴールに一直線に向かうようにします。
GameScene.swiftにupdateメソッドを追加します。その中にenemy.position.xを1ずつ増やす処理を記述します。
override func update(currentTime: NSTimeInterval) { enemy.position.x += 1 }
これで敵が左から右に移動するようになりました。
各ゲームシーンを設定
GameSceneに下記を追加します。三つのゲームシーン「Playing」(ゲーム中)「GameClear」(ゲームクリア)「GameOver」(ゲームオーバー)を設定します。
class GameScene: SKScene { enum State { case Playing case GameClear case GameOver } var state = State.Playing // ...略 }
ゲームオーバー処理
ゲームオーバー処理を追加します。敵が右端に到達したらゲームオーバーになるようにします。
敵がゴールに到達したかどうかを判定します。updateメソッドを下のように書き換えてください。
class GameScene: SKScene { // ...略 override func update(currentTime: NSTimeInterval) { if state == .Playing { enemy.position.x += 1 if frame.width < enemy.position.x { state = .GameOver let myLabel = SKLabelNode(fontNamed: "HiraginoSans-W6") myLabel.text = "ゲームオーバー" myLabel.fontSize = 45 myLabel.position = CGPoint(x:CGRectGetMidX(self.frame), y:CGRectGetMidY(self.frame) - 20) addChild(myLabel) } } } }
下の2点を変更しました。
- stateが「Normal」のときだけ(5行目)敵が移動するようにする
- 敵が画面の右端まで移動したら(8行目)、stateを「GameOver」にして(6行目)「ゲームオーバー」ラベルを表示する(9行目)
これで敵が右端に到達したときに「ゲームオーバー」と表示されるようになりました。
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- 開発者向けiOS 9、WatchOS 2、Swift 2、Xcode 7の新機能と新しいApple Developer Programの参考情報まとめ
iOS 9、WatchOS 2、Swift 2、Xcode 7の新機能や、Apple Developer Programについて、その概要とアップルが公開している参考情報をまとめて紹介します。 - Apple WatchやiPhoneのアプリを作ろう! Playgroundで学ぶSwiftの基礎―変数、定数、型、演算
本連載では、これからプログラミングやiPhoneアプリ開発を始めてみたい方を対象に、開発に必要な知識を基礎から解説していきます。今回は、Swiftの変数、定数、型、演算などについてサンプルプログラムを交えて解説します。 - iOSアプリ開発でObjective-CからSwiftに移行するための手順、注意点まとめ〜言語仕様の違いは? 連携時の呼び出し方は?
開発生産性や品質を向上させたいiOSアプリ開発者のためにObjective-CからSwiftへ移行するメリットや手順、注意点など勘所をまとめて紹介します。 - いまなら無料! Unityで始めるiPhoneゲーム作成“超”入門
3Dコンテンツ開発ツール「Unity」を使った、簡単な3Dミニゲーム制作の流れを一から解説していきます