第11回 3D探索4
3 / 4 発展:失敗と再挑戦を追加する
このステップの目的
失敗を一度だけ受け付け、初期状態から再開する方法を考える
このステップは追跡者などを追加した場合の任意課題です。基本課題の鍵と扉だけを確認する場合は、次のプレイテストへ進みます。
同じ失敗を繰り返し処理しない
追加したゲーム進行用コンポーネントのクラス内に private bool failed = false; を宣言します。入力・移動の停止と失敗表示を行う Fail() を用意してから、同関数の先頭に、二重実行を防ぐ次の2行を追加します。
csharp
private void Fail()
{
if (failed) return;
failed = true;
// ここで入力・移動を停止し、失敗表示を有効にする。
}入力や移動の停止は、追加したゲーム進行用コンポーネントへまとめます。UI表示より先に状態を変えるため、同じフレームに二つの接触通知が来ても二つ目は戻ります。呼び出しを続けて2回行い、表示や音が1回分になることを確認します。
再開時にそろえるもの
最初の比較例ではSceneを初期状態から読み直す方法を使います。手動で初期化する場合は、入力停止→所持と扉→鍵の再表示→プレイヤーとNPCの位置→表示→入力再開、の順で全体をそろえます。
Sceneの再読み込みでもstatic変数や保存ファイルの内容は自動で初期値へ戻るとは限りません。保存した進捗を引き継ぐか、同じ試行をやり直すかを先に決めてください。
チェックリスト
- 発展を行う場合、Failを2回呼んでも失敗処理は1回だけになる
- 再開後は鍵が元の場所にあり、扉が閉じ、開始位置から操作できる