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