読者です 読者をやめる 読者になる 読者になる

WonderPlanet DEVELOPER BLOG

ワンダープラネットの開発者ブログです。モバイルゲーム開発情報を発信。

Apple WatchでSpriteKitを使ってアニメーション

iOS

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関連の機能を交えて紹介しようと思います。
f:id:HidehikoKondo:20161024175354p:plain

SpriteKitに対応したWatchAppのプロジェクトの作成

まずはiPhoneのアプリをプロジェクトを作る

「SingleViewApplication」で作りましょう。
プロジェクト名などは好きなように設定してください。 f:id:HidehikoKondo:20161024180500p:plain

WatchAppのTARGETを追加する

プロジェクトができたら、WatchAppのターゲットを追加します。
「NEW」→「Target...」をメニューから選択。 f:id:HidehikoKondo:20161024180616p:plain

「watchOS」のタブから「Game App」を選択してターゲットを追加する。
f:id:HidehikoKondo:20161024180635p:plain

storyboardを開くと、SpriteKitのシーンが配置された状態になっていることがわかります。
このシーンにオブジェクトを配置していくことでゲームの画面を作っていきます。 f:id:HidehikoKondo:20161024180706p:plain

シーンを編集する

シーンにオブジェクトを配置する

「GameScene.sks」でシーンを編集します。
初期状態では定番の「Hello World」のラベルが表示されています。いらないので消しておきましょう。
f:id:HidehikoKondo:20161024182214p:plain

座標は画面の中央がx:0 y:0となっています。
f:id:HidehikoKondo:20161024183026p:plain

まずはColorSpriteをシーンに配置してみましょう。
このオブジェクトにSKActionを設定してアニメーションさせてみます。
f:id:HidehikoKondo:20161025153300p:plain

SKActionがGUIで設定する

SKActionとはオブジェクトにアニメーションをさせるためのクラスです。
(SKActionの詳細は『SpriteKitのSKActionでオブジェクトをアニメーションしてみよう』を参照)

Xcode 8からはこれをGUIで設定できるようになりました。
Object Libraryの一覧の下の方にSKActionの項目があります。
アクションを設定したいオブジェクトのタイムラインにドラッグ&ドロップすると、そのアクションを設定することができます。

f:id:HidehikoKondo:20161025190346p:plain

アクションをループする場合はアクションをクリックするとループボタンが出てくるので、これを押すとループ無限ループになります。 「+」と「ー」のボタンはループする回数を指定できます。
f:id:HidehikoKondo:20161025191253p:plain

アクションのパラメータは右側のウィンドウから設定することができます。
f:id:HidehikoKondo:20161025202711p:plain

「Animate」ボタンを押すことで、設定したアニメーションの再生され、シミュレーターや実機に転送しなくても動作確認ができます。
f:id:HidehikoKondo:20161025195754p:plain

実行すると赤いスプライトが回転アニメーションが再生されます。
f:id:HidehikoKondo:20161025193141g:plain

こんな感じでお手軽にアクションを設定することができます。
今回は回転するだけの設定を行いましたが、MoveやFadeのアクションを組み合わせてより複雑なアクションを設定することもできます。
以前はコードでSKActionクラスのsequenceやgroupを組み合わせて複雑なコードを書く必要がありました。
これらの設定をXcodeの画面上で全て設定することができるようなり、とっても簡単になりました。

パーティクルも動くぞ!

f:id:HidehikoKondo:20161025193938g:plain
まさかと思いましたが、パーティクルも普通に動いてしまいます。
ただし電池消費が激しそうなのと、あまりたくさん使うとApple Watchの処理が追いつかなくなるので、使いすぎには注意しましょう。

Object Libraryに「Emitter」というオブジェクトがあるので、これでパーティクルを表示できます。
(パーティクルのパラメータや設定については『SpriteKitでパーティクルを表示してみよう』を参照)

手首から燃えあがる炎。
なんだか攻撃魔法が放てそうなこの中2病感・・・(笑)
VRコンテンツとかに組み合わせられないだろうか?

使ってみた感想

Apple Watchアプリはいままでパラパラ漫画のようなアニメーション程度しかできず、リッチな表現をするのは困難でしたが、SpriteKitにより複雑なアニメーションが作りやすくなりました。

そしてSKActionのGUIでの設定はめっちゃ便利です!
以前はSKActionでオブジェクトにアニメーションを設定するのに、パラメータの調整・コードの修正・実行をひらすら繰り返していましたが、GUIで設定から確認までできるようになったことで調整作業がとても楽チンになりました。

ゲーム開発において、ゲームエンジンといえばCocos2d-xやUnityが主流となっていてSpriteKitはすっかり影の薄い存在となっていますが、Apple WatchでSpriteKitが使えるようになったことにより、その存在価値も上がったように思います。
これからApple Watchアプリを作る機会があったら活用していきたいと思います。