今日はSpriteKitというゲーム作成用のフレームの紹介をしていきたいと思います。
SpriteKitとは
iOS7で出たゲーム作り用のフレームワークです。
ゲーム作りに必要なSKNode・SKActionなどの様々な便利クラスを提供してくれます。
SpriteKitのサンプルを動かしてみる
早速XcodeでSpriteKitのサンプルを動かしてみます。
新規プロジェクト作成画面でGameを選択します。
作成されたプロジェクトを動かすと「画面タップで飛行機が出現するアプリ」が動いているかと思います。
SpriteKitの機能
今動かしたサンプルを元にSpriteKitの機能について書いていきます。
まずは主要なクラスや機能について書いていきます。
画面を構成するクラス
SpriteKitでは画面をSKSceneクラスを使って表します。
SKSceneはゲーム以外のアプリのUIViewControllerのようなものです。
その上にSKNode(UIViewのようなもの)を配置していく事で画面を作成します。
SKSceneを画面に表示する方法ですが、UIViewControllerのviewプロパティーにSKSceneを貼り付ける事で画面にSKSceneを表示しています。
画面タッチイベント
画面がタッチされた時はtouchesBeganメソッドが呼ばれるので、それを使って画面タッチイベントを取得します。
touchesBeganはUIKitの機能なのですが、SKSceneがUIResponderを継承しているために使うことができます。
フレーム毎に呼ばれるメソッド
SKSceneのupdateメソッドはフレーム毎に呼ばれます。
その為画面をフレーム毎に更新したい時はupdateメソッドに処理を書いていきます。
その他の機能
サンプルでは使われていないのですが、まだまだ便利機能があるので簡単に紹介していきます。
物理演算
SpriteKitは重力や衝突といった物理法則を演算するの為のエンジンを備えています。
3Dゲーム
SceneKitというフレームワークを使う事で3Dゲームを作る事ができます。
こちらはiOS8から使える機能です。
Pathfinding機能
iOS9で登場したGameplayKitを使えばPathfindingという機能を使う事ができます。
これは障害物情報と開始位置・終了位置を与えれば自動で開始→終了の最短ルートを出してくれるというものです。
GameplayKitでは他にもミニマックス法を実現する機能やStateMachine機能など面白い機能が多々あります。
SpriteKitの長所
最後にゲーム作りで有名なUnityやCocos2Dと比較したSpriteKitの長所を書いていきます。
SpriteKitの最大の特徴は、iOSアプリの開発環境がそのまま使える点かと思います。
サンプルで紹介したようにSpriteKitはXcodeでSwiftを使って開発するのでCocoaPodsも使う事ができます。
その為DBライブラリや通信ライブラリも普段使っているものを使う事ができます。
それと広告・GoogleAnalytics等の外部SDKの導入も設定が比較的簡単なこともありiOSアプリ開発者にとっての学習コストは低いと思っています。
しかしUnityやCocos2Dと違ってAndroid対応ができない・UnityのAssetStoreのような素材が豊富な環境がないという弱点もあります。
そういった長所・短所があるので、iOS開発者が初めてゲームを作る場合はSpriteKit、慣れてきたらUnityを使うというスタイルが良いと思っています。
まとめ
簡単ではありますがSpriteKitについて書いてみました。
ゲームを作る際の参考にでもして頂けると幸いです。
宣伝になってしまうのですが、「SpriteKitでタワーディフェンスを作る」という連載を書いているのでゲーム作りに興味持ちましたらこちらも読んで見てもらえると嬉しいです。