独習 Unity アプリ開発

独習でスマフォ向けアプリ開発を勉強中

Unity で テトリス風ゲームを作ってみる#10

前回の続き


今回はゲームオーバーとリスタートについて考える。

 

ゲームオーバーとリスタート


ゲームオーバーになる条件は、Next テトリミノがフィールド上に移動したときに、フィールド内のブロックと重なった場合である。

ゲームオーバーになった場合は、ゲームを停止し、ゲームオーバー画面を表示する。ゲームオーバー画面の上にはリスタートボタンがあり、リスタートボタンが押された場合は、フィールド内をクリアして最初からゲームを再開する。

 

よって

    • テトリミノがフィールドへ移動した際に、ブロックと重なっているかどうかを検出する。
    • ゲームを停止する。
    • ゲームオーバー画面を表示する。
    • リスタートボタンが押されたことを検知する。
    • ゲーム内のブロックとNext テトリミノをクリアする。
    • スコアとレベルを初期値に戻す。
    • ゲームを再開する。

が実現できればよい。

 

ブロックの重なり判定は、今までと同様にRaycast を使って検出できる。ゲームを停止するのは、Next テトリミノをフィールド上に移動しないようにすればよさそう。

ゲーム内のブロックとNext テトリミノのクリアは、各GameObject をもれなく削除すればよい。ゲームを再開するのは、クリア後にNext テトリミノをフィールドに移動すれば開始できる。

と考えると、追加で確認が必要なことは、ゲームオーバー画面の表示とスタートボタンが押されたことの検知でだけである。

 

ゲームオーバー画面は、UI オブジェクトだけで構成される画面と考えて、下図のようにPanel UI オブジェクトで親の背景を作り、その上に子のText UI オブジェクトのタイトル(ここでは"Game Over"の文字)と子のリスタート用のButton UI オブジェクトを配置して実現する。

 表示、非表示の実現方法は、親であるPanel UI GameObject のSetActive で制御を行う。ゲームプレイ中は、SetActive (false) でゲームオーバー時はSetActive (true) という感じ。

 

Game Over UI 構成

 

リスタートボタンの検知は、Button UI オブジェクトに付加されているButton コンポーネントのコールバックの仕組みを使えば実現可能。

Button コンポーネント

"On Click ()" という項目に、自前スクリプトのコールバック関数をセットすれば、ボタンが押された時にそのコールバックが呼ばれる。

 

以上の内容をプロト実装した結果がこちら。

www.youtube.com

 

次の記事


from20150817.hatenablog.com

 


目次に戻る