R&D事業部の近藤です。
今回はSpriteKitについてです。
SpriteKitとはiOS 7で登場した2Dゲームを作るためのフレームワークです。
2016年9月のWWDCで発表のあったwatchOS 3が公開され、Apple WatchにもSpriteKitが対応しました。
これがApple Watchに対応したことにより、Apple Watch上でオブジェクトのアニメーションやパーティクルなど、よりリッチな表現をすることができるようになりました。
今回はApple WatchでのSpriteKitの使い方と、Xcode 8で新しく追加されているSpriteKit関連の機能を交えて紹介しようと思います。
SpriteKitに対応したWatchAppのプロジェクトの作成
まずはiPhoneのアプリをプロジェクトを作る
「SingleViewApplication」で作りましょう。
プロジェクト名などは好きなように設定してください。
WatchAppのTARGETを追加する
プロジェクトができたら、WatchAppのターゲットを追加します。
「NEW」→「Target...」をメニューから選択。
「watchOS」のタブから「Game App」を選択してターゲットを追加する。
storyboardを開くと、SpriteKitのシーンが配置された状態になっていることがわかります。
このシーンにオブジェクトを配置していくことでゲームの画面を作っていきます。
シーンを編集する
シーンにオブジェクトを配置する
「GameScene.sks」でシーンを編集します。
初期状態では定番の「Hello World」のラベルが表示されています。いらないので消しておきましょう。
座標は画面の中央がx:0 y:0となっています。
まずはColorSpriteをシーンに配置してみましょう。
このオブジェクトにSKActionを設定してアニメーションさせてみます。
SKActionがGUIで設定する
SKActionとはオブジェクトにアニメーションをさせるためのクラスです。
(SKActionの詳細は『SpriteKitのSKActionでオブジェクトをアニメーションしてみよう』を参照)
Xcode 8からはこれをGUIで設定できるようになりました。
Object Libraryの一覧の下の方にSKActionの項目があります。
アクションを設定したいオブジェクトのタイムラインにドラッグ&ドロップすると、そのアクションを設定することができます。
アクションをループする場合はアクションをクリックするとループボタンが出てくるので、これを押すとループ無限ループになります。
「+」と「ー」のボタンはループする回数を指定できます。
アクションのパラメータは右側のウィンドウから設定することができます。
「Animate」ボタンを押すことで、設定したアニメーションの再生され、シミュレーターや実機に転送しなくても動作確認ができます。
実行すると赤いスプライトが回転アニメーションが再生されます。
こんな感じでお手軽にアクションを設定することができます。
今回は回転するだけの設定を行いましたが、MoveやFadeのアクションを組み合わせてより複雑なアクションを設定することもできます。
以前はコードでSKActionクラスのsequenceやgroupを組み合わせて複雑なコードを書く必要がありました。
これらの設定をXcodeの画面上で全て設定することができるようなり、とっても簡単になりました。
パーティクルも動くぞ!
まさかと思いましたが、パーティクルも普通に動いてしまいます。
ただし電池消費が激しそうなのと、あまりたくさん使うとApple Watchの処理が追いつかなくなるので、使いすぎには注意しましょう。
Object Libraryに「Emitter」というオブジェクトがあるので、これでパーティクルを表示できます。
(パーティクルのパラメータや設定については『SpriteKitでパーティクルを表示してみよう』を参照)
手首から燃えあがる炎。
なんだか攻撃魔法が放てそうなこの中2病感・・・(笑)
VRコンテンツとかに組み合わせられないだろうか?
使ってみた感想
Apple Watchアプリはいままでパラパラ漫画のようなアニメーション程度しかできず、リッチな表現をするのは困難でしたが、SpriteKitにより複雑なアニメーションが作りやすくなりました。
そしてSKActionのGUIでの設定はめっちゃ便利です!
以前はSKActionでオブジェクトにアニメーションを設定するのに、パラメータの調整・コードの修正・実行をひらすら繰り返していましたが、GUIで設定から確認までできるようになったことで調整作業がとても楽チンになりました。
ゲーム開発において、ゲームエンジンといえばCocos2d-xやUnityが主流となっていてSpriteKitはすっかり影の薄い存在となっていますが、Apple WatchでSpriteKitが使えるようになったことにより、その存在価値も上がったように思います。
これからApple Watchアプリを作る機会があったら活用していきたいと思います。