続いて、画面に敵を表示してみます。
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点を変更しました。
これで敵が右端に到達したときに「ゲームオーバー」と表示されるようになりました。
開発者向けiOS 9、WatchOS 2、Swift 2、Xcode 7の新機能と新しいApple Developer Programの参考情報まとめ
Apple WatchやiPhoneのアプリを作ろう! Playgroundで学ぶSwiftの基礎―変数、定数、型、演算
iOSアプリ開発でObjective-CからSwiftに移行するための手順、注意点まとめ〜言語仕様の違いは? 連携時の呼び出し方は?
いまなら無料! Unityで始めるiPhoneゲーム作成“超”入門Copyright © ITmedia, Inc. All Rights Reserved.