【unity】3D脱出ゲーム作成_その7

3D脱出ゲーム

ボタンを正しい順番で押してギミック作動

その3で ”ボタンを正しい回数押して開く箱” をやりましたが、より汎用性の高いギミックを箱の上面に作ります。まずは、前回作成した階段をクリックして箱を見下ろすカメラに切り替えるようにします。戻るボタンはその3で作成したものを複製して使用します。

その後上下左右にボタンを設置しましょう。前回の透明ボタンと違い、細長黒ボタンにしました。ここにナイフを突き刺すとボタンが押されるという設定です。

一面にcanvasを置くのを忘れずに
左ボタンが(正面から見て)上ボタンという設定

BoxManagerクラスに以下スクリプトを追加します。階段をクリック出来たという事はナイフを持っていたという事になるので、その処理はしてません。UDDUがヒントでしたね。

public GameObject boxTopCamera;//上の画像のカメラ
public GameObject BoxInside;//作動されるギミック
private int countB;
public AudioClip sound1;//カチッ
public AudioClip sound2;//ゴトッ
public GameObject knifeU;//上ボタン入力時に出現
public GameObject knifeD;//下ボタン入力時に出現
public void StairAfterClicked()//その6で設置したStairAfterに設定
    {
        playerCamera.SetActive(false);
        boxTopCamera.SetActive(true);
    }
public void BoxTopClicked(int number)//引数を使用_上下左右ボタンにアタッチ
    {
        countB++;
        if(countB == 1 && number != 3)
        {
            Debug.Log("no");
            countB = 0;
        }
        else if(countB == 1 && number == 3)
        {
            StartCoroutine(Ucorrect());//上ボタン入力時に上ナイフを差し込む
        }

        if(countB == 2 && number != 4)
        {
            Debug.Log("no");
            countB = 0;
        }
        else if (countB == 2 && number == 4)
        {
            StartCoroutine(Dcorrect());//下ボタン入力時に下ナイフを差し込む
        }

        if (countB == 3 && number != 4)
        {
            Debug.Log("no");
            countB = 0;
        }
        else if (countB == 3 && number == 4)
        {
            StartCoroutine(Dcorrect());
        }

        if (countB == 4 && number == 3)
        {
            StartCoroutine(Ucorrect());
            Debug.Log("ok");
            BoxInside.SetActive(true);
       audioSource.PlayOneShot(sound2);
        } 

     if(countB > 4)
        {
            countB = 0;
        } 
    }
private IEnumerator Ucorrect()
    {
        knifeU.SetActive(true);
        yield return new WaitForSeconds(1.0f);
        audioSource.PlayOneShot(sound1);
        knifeU.SetActive(false);
    }
private IEnumerator Dcorrect()
    {
        knifeD.SetActive(true);
        yield return new WaitForSeconds(1.0f);
        audioSource.PlayOneShot(sound1);
        knifeD.SetActive(false);
    }

ボタンを押されてカウントアップされるcountBと押されたボタンに割り当てられた番号がマッチするかどうかを条件分岐させてみました。

このスクリプトを書き終えたら赤いハイライトで示した通り、BoxTopClickedメソッドを上下左右ボタンのOnClockにアタッチします。すると⏬の様に数字入力欄が出ますので、割り当て番号を上ボタン3・下ボタン4・左右1と2のいずれか(当たり判定に用いない為)にします。これで準備完了です。

下ボタンの割り当て番号は”4”

引数をボタンに用いるのは、同じ様なメソッドを何個も作らずに済むのでいいですね。その6で紹介したコルーチンを今回も使ってます。細かい事ですが、コルーチン外は同期処理となりますのでコルーチンで1秒待つ処理を行なった事から、メソッド内で後ろにあるsound2がsound1よりも先に鳴ります。以下完了デモ

15秒から登場する変な上蓋が今回作動させたBoxInsideギミックで、その子オブジェクトとして鍵を出現させました。これで取得アイテムがナイフと鍵の二つになりましたので、そろそろ脱出ゲーム定番のアイテムスロットを実装したいと思います。

その他

⚠️その7まで続けましたので、これまでやった内容は応用を含まない限り説明を割愛しています。

コメント

タイトルとURLをコピーしました