どうも音無サノトです。
先週はゲーム制作ができなかったです。今週からまたちゃんとやっていきます。
まあ、この記事は自分用のメモみたいなものですから書かなくてもいいんだけど。。。
今日の成果
- ゲームオーバー時にリトライできるようにした
- ゲームクリア時に次のステージに行けるようにした
- 2つ目のステージを作成(動く障害物)
今日のまとめ pic.twitter.com/TCD2DaOBe3
— 音無サノト (@otonasisanoto) 2020年6月28日
作業ログ
今日やることは以下の通り。
#ゲーム制作 #Unity
— 音無サノト (@otonasisanoto) 2020年6月28日
今日のやること
・ゲームオーバーの際、リトライボタンを追加
・ゲームクリアの際、次のステージへ移動
・2つ目のステージ作成
まずはボタンの設置。
Hierarchyの+ボタンからUI > Buttonを選択してボタンを追加。
ボタンの表示を変更してゲームーオーバーのテキストの下にボタンを追加します。
新しくスクリプトを作成してボタンに以下の処理を追加します。
これでボタンを押すと現在のシーンがロードされるようになりました。
SceneManager.LoadScene()関数でシーンをロードしております。
引数にはロードするシーンの番号を与えています。
PlayerController.currentStage変数はPlayerControllerスクリプト内で宣言された、シーンをまたいでも保持される変数です。
Unityではpublic staticで変数を宣言しておけば他のスクリプトからもアクセスでき、ゲームが終了するまで保持されるのでこれで現在のシーンが何番目のシーンかを管理します。
こんな感じで宣言しています。
これでゲームオーバ時にボタンを押すとゲームをリスタートすることができます。
次にゲームクリア時に次のステージへ移動できるようにします。
ゲームオーバーと同じようにゲームクリアの下にボタンを追加して、スクリプトを追加します。
スクリプトでは現在のシーン番号にプラス1することで次のシーンに飛ぶようにしています。
新しいシーンを作成して、Build Settingsにドラッグ&ドロップしてシーンの連番をつけておきます。
これでゲームクリア時にボタンを押すと次のシーンへと飛びます。
それでは次のシーンの中身を作成していこうと思います。
まず、Playerやカメラなど次のシーンでも流用するオブジェクトをひとまとめにしてプレハブ化しておきます。
これでどのシーンでもすぐにオブジェクトを使えるようになります。
第2ステージはUnityのAnimation機能を使用して動く障害物を設置してみました。
本日は以上です。