ここから本文です
mic*aeonのブログ
ブログを始めて9年が経ちました

書庫全体表示

(※前回までタイトルを『Unityの勉強:Space Shooter □/19』

 としてきましたが、チュートリアルの動画の数は確かに19個あったのですが、

 イントロダクションを0番としたのと、最後の2つはextendなので、

 『□/16』に変更しました。extendの分は、『ext.□/2』となります。)



『Ending the game - 15 - Space Shooter - Unity Official Tutorials 』

今回は、ゲームオーバーとリスタートの実装です。


はじめに、ゲームオーバーをお知らせするテキストと

リスタートを促すテキストを用意します。

前回作成したスコアの表示と同じ方法です。

スコア表示時には触れられていなかった、アンカー、アラインメント

の設定について説明がありました。

アラインメントについては、今回の場合はどのように設定しても

見た目に変化はないようでした。


続いて上記の表示オブジェクトを使って、実際にゲームオーバー、

リスタートを作ります。

これらのコードをゲーム制御スクリプトに記述します。


まず、ゲームオーバー関数を用意します。

こちらは、後ほど外部から呼ぶことになります。


次にゲームオーバーになったらリスタートを促す「Rボタンでリスタート」

を表示するコードを以前作成したゲーム中、常に回り続けるループ文の中に

追加します。


次にリスタート可能な状態の時にRボタンが押されたら、

ゲームを最初から始めるようにします。

こちらのゲームをやり直すコードですが、動画の中で書かれている通り

Application.LoadLevel (Application.LoadedLevel);

と記述すると、Application には LoadedLevel は定義されていないという

エラーになってしまいました。

エディタ上で候補を探すと、打ち消し線が引かれていますが、

loadedLevel

という変数があったのでこちらを使用してみたところ、

警告が出ましたがビルドが通りました。

イメージ 1


最後にゲームオーバー関数を

「オブジェクトどうしの接触による削除スクリプト」

の中のプレイヤーが衝突した場合の条件文の中で呼ぶようにしました。


実行したところ、プレイヤーが小惑星にぶつかって爆発すると

ゲームオーバーの表示がされ、小惑星が全て画面上から消えたところで、

リスタートを促す表示が出てきて、

Rボタンを押すことによりゲームを再び始めから開始できました。


LoadLevel と loadedLevel の警告についてですが、それぞれ廃止されたので

Application.LoadLevel は代わりに SceneManager.LoadScene を

Application.loadedLevel は代わりにSceneManagerを使用して

ロードされてるシーンを使ってください、という表示がコンソール上に出ました。

SceneManagerを使用するために

using UnityEngine.SceneManagement;

をスクリプトの冒頭に書き加えて、

Application.LoadLevel を SceneManager.LoadScene と書き換えましたが、

Application.loadedLevel をどのように書き換えたら良いか分かりませんでした。

Unity の Community の中をのぞいたら、ActiveScene を

ロードすれば良いようなので

SceneManager.LoadScene (SceneManager.GetActiveScene ().name );

と書き換えてみたところ、警告が消えました。動作も正しく動きました。

開くトラックバック(0)

本文はここまでですこのページの先頭へ
みんなの更新記事