ManagerSceneでゲームの流れを管理しよう
phina.js Advent Calendar 2015の2日目です。
phiさん 前 ←→ 次 emadurandalさん
シューティングゲーム作るよ!
新進気鋭の国産JavaScriptゲームエンジン「tmlib.js」の後継である「phina.js」がリリースされました!
さっそくですが、phina.jsの紹介+サンプル提供を兼ねてシューティングゲームを開発中です。
まだまだ開発途上ですが、phina.jsの新機能をふんだんに盛り込んでいきたいと考えています。
ManagerSceneを使ってシーン遷移をスッキリ管理
本ゲームはたくさんのシーンを次々に遷移しながら実行されます。
開発にあたる際、たとえばステージ3の道中中盤をデザインしている時に、テストのためにわざわざタイトル画面から実際にプレイするのは大変ですよね。
シーンごとに独立して製作し、あとで組み合わせる方法をとるのがスマートです。
そんな時に役立つのがphina.game.ManagerSceneです。
ManagerSceneの基本的な使い方
シーンAからシーンBへ遷移し、その後再びシーンAに戻ってくるような流れを作りたい場合、以下のようなコードになります。
- SceneSequence.js
|
|
- SceneA.js
|
|
(SceneB.jsは省略)
Sceneクラス内で exit()
メソッドを呼び出すことにより、そのシーンを終了させることが出来ます。
終了後は、
- nextLabelで指定されたシーン
nextLabel指定がなければ
- ManagerScene内で次に書かれているシーン
に遷移します。
条件分岐
特定の条件を満たす場合のみ遷移先を変えたい時もありますね。
たとえば、ゲーム中に3回ミスをしてしまったら次のステージではなくゲームオーバーシーンに遷移させたい場合などです。
そういった時は以下のように記述します。
- SettingScene.js
|
|
- SceneA.js
|
|
exit()
メソッドに引数としてラベル名を渡すことで、ManagerSceneで設定したラベルを指定してジャンプすることが出来ます。
シーンに引数を渡す
ManagerSceneでは次のシーンへの遷移時、シーンクラスをインスタンス化します。
その際にシーンクラスのコンストラクタへ引数を渡すことが出来ます。
- SceneSequence.js
|
|
- GameOverScene.js
|
|
次のシーンに値を渡す
遷移前のシーンから次のシーンに情報を渡すことが出来ます。
ゲームシーン中に獲得したスコアをリザルトシーンで表示する時などに使えますね。
- SceneA.js
|
|
- GameOverScene.js
|
|
exit()メソッドの第2引数に渡したオブジェクトとManagerSceneで設定したargumentsオブジェクトはマージされます。
入れ子構造
ManagerScene自体もまたSceneのサブクラスですので、ManagerSceneから別のManagerSceneを呼び出すことも可能です。
ステージ1から最後までプレイするアーケードモードと、ステージを選んでプレイする練習モードを実装したい場合などに利用できます。
- ゲーム全体の流れ
- アーケードモードの流れ
- 練習モードの流れ
- PhinaShooter.js(抜粋)
|
|
まとめ
今回紹介したように、ManagerSceneを使ってシーン管理をすることで、アプリケーション全体をシンプルでスマートかつ変更に強い構造にすることが出来ます。
ぜひ使ってみてください。