HatenaPocketゲームオーバー、クリアの実装はゲーム画面を暗くして文字でクリアやゲームオーバーと表示します。カメラをSceneに設定しているので、これの実装がなかなか面倒だったりします。そこで、JavaFXのSubSceneクラスを使用します。落ちたらゲームオーバーにする右端へ着いたらゲームクリアにするタイトル画面やゲーム説明画面を制作し、全画面遷移の実装サンプルSubSceneの利用SubSceneはSceneと同じく、カメラを設置でき、さらにNodeを継承しているクラスです。これを利用することによって、カメラが適用されたNode表示上にカメラが適用されないUIの表示が簡単に可能になります。SubSceneについて基本の利用方法をサンプルコードで示します。ParallelCamera();c.setTranslateX(100);sub.setCamera(c);root.getChildren().add(sub);primaryStage.setScene(scene);primaryStage.show();}}実行結果このコードではStage→Scene→Group→SubScene→Groupという具合にノードをはめ込んでいます。SceneはStageにセットするだけでGroup等には追加できませんが、SubSceneであればNodeとして扱えるので、Groupにセットできています。SubSceneにはカメラをセットし右へスクロールさせています。赤色と青色の四角形は同じ座標に作成したのに、表示位置が違いますね。これは青色はカメラが適用されたSubScene上に表示され、赤色はカメラが適用されないScene上に表示されたからです。ライブラリにはGameSceneFXというクラスを追加してゲームで利用していますが、このクラスがSubSceneとして扱えるクラスとなります。中身はSubSceneにゲームループを実装できるようにしただけの単純なクラスです。別画面との連携ゲーム画面はタイトルやゲーム説明画面でも使いまわす予定ですので、今回の主な画面構成を見ておきます。ゲーム画面はSubSceneノードで作成し、そのノードをタイトル画面やゲーム説明画面、さらにゲーム中のステータスやゲームオーバーなどを表示する画面に埋め込むようにします。このようにしておけば、設定画面の裏でゲームを動かしながら処理させるのも簡単ですね。タイトル画面やゲーム説明画面などの画面では普通にいつも通りJavaFXのAPIでのUIを構築をしておけばOKです。UI側の表示は半透明表示を多めに使います。裏でゲームを動かすわけですから完全に見えなくなってしまうと意味がないですからね。落ちたらゲームオーバーにするこれは単純にキャラのY座標が一定値より大きくなった時に判定して実装します。カメラからのY座標を計算して実装したほうが場合によってはいい場面もありそうですが、今回のような単純にY座標範囲が0~600の固定であれば、固定値で座標比較するれば良いでしょう。右端へ着いたらゲームクリアにするこれも単純にキャラのX座標で判定します。ステージの大きさより少し小さい範囲をカメラの移動範囲にしておけば、キャラが画面外へ移動したときにクリアとかも出来そうですよね。ゲームオーバー、ゲームクリアの実装サンプルそれでは、実際にゲームオーバーとゲームクリアを実装したサンプルをご覧ください。true;}});//ゲーム画面をベースのゲームオーバーやクリアを表示する画面に追加gameOverOrClearView.getChildren().add(gameView);//画面の表示GTKManagerFX.changeView(gameOverOrClearView);}}実行結果タイトル画面やゲーム説明画面を制作し、全画面遷移の実装サンプル上記のような感じで、タイトル画面やゲーム説明画面も作って、今まで作成した各種画面を遷移する簡単な実装をしてみます。TestGameViewクラスがゲーム画面、TestGameUIViewクラスがゲームのUI画面、TestTitleViewクラスがタイトル画面、TestDescriptionViewクラスがゲーム説明画面として定義してみます。"ゲームの説明をテストだよ。\n矢印をクリックしてページを進めてね。