【SpriteKit】カメラを設定してみた

ゲームを作る上でカメラの実装は必須になる。

プレイヤーの位置に合わせてカメラを移動させる方法をご紹介する。

カメラは`SKCameraNode`を使ってインスタンスを作る。

let cam = SKCameraNode()

GameSceneクラスのメンバとして追加するのが良い。

次にdidMoveの中でカメラをセットする。

//カメラをセット
self.camera = cam
self.addChild(cam)

これでカメラの設定は完了。

次にカメラの座標をプレイヤーの位置に合わせて変更するコードを`didSimulatePhysics`追加する。

`didSimulatePhysics`はフレームが更新される度に呼び出される関数なので、この中に更新処理を書くのが良さげ。

override func didSimulatePhysics() {
    //横スクロールゲームのため、高さは固定でx座標だけ動けば良い。
    self.camera?.position = CGPoint(x: self.nokman.position.x, y:0)
}

プレイヤーのxポジションをカメラにセットすることで、キャラクターの移動に合わせてカメラも動く。

横スクロールゲームの場合、y座標は動かなくても良いので常に0にしておく。

これでカメラの設定は完了だ。

これはオプション的な内容だが、カメラの移動に合わせてボタンなどを動かしたい場合は、以下のコードのようにカメラの子としてノードをセットする必要がある。

cam.addChild(leftMove)

SKSceneの子に設定している場合には注意しよう。

ABOUTこの記事をかいた人

個人アプリ開発者。Python、Swift、Unityのことを発信します。月間2.5万PVブログ運営。 Twitter:@yamagablog