(ドアの作成)
- 新規に「Cube」を作成
 - 名前を「Door」に変更
 - 「Scale」を「5,5,1」に変更
 

- 色は「Material」を使って自由に設定
 - 「Position」は通路に設定
 

(ドアを動かす)
<スクリプトの作成>
- 新規にC#スクリプトを作成
 - 名前を「DoorMove」に変更
 - 下記のコードを書いてチェック
 
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class DoorMove : MonoBehaviour
{
    private Vector3 pos;
    void Update()
    {
        pos = transform.position;
        transform.Translate(0, 0.01f, 0);
        if(pos.y > 6f)
        {
            Destroy(gameObject);
        }
    }
}
<設定>
- スクリプトをDoorオブジェクトに追加
 

- 設定が完了したらゲーム再生
 - ドアが自動的に上に移動すれば成功です。
 

(透明センサーの作成)
- 新規に「Cube」を作成
 - 名前を「DoorOpen」に変更
 - 「Scale」を「5,5,1」に変更
 - 通路の「ドアの手前」に移動させる
 

<すり抜け>
- DoorOpenオブジェクトを選択
 - 「Box Collider」の中にある「Is Trigger」にチェックを入れる。
 

- これでDoorOpenオブジェクトを「すり抜ける」ことができるようになります。
 - ゲームを再生して確認してみましょう。
 
<透明化>
- DoorOpenオブジェクトを選択
 - 「Mesh Renderer」の「チェック」を外す。
 

- これでDoorOpenオブジェクトが「透明」になります。
 - ゲームを再生して確認してみましょう。
 

*これがドアを開けるセンサーになります。
(DoorOpenに触れたらDoorが上に移動する)
<仕組み>
- DoorOpenオブジェクトを選択
 - 「Door Move」スクリプトの「チェック」を外して「オフの状態」にする。
 - これでDoorは動かなくなります。
 

- PlayerがDoorOpenオブジェクトに触れた瞬間、「Door Move」スクリプトの「チェック」を入れて「オンの状態」にする。
 - これでDoorは上方向に動きます。
 

<スクリプトの作成>
- 新規にC#スクリプトを作成
 - 名前を「DoorOpen」に変更
 - 下記のコードを書いてチェック
 
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class DoorOpen : MonoBehaviour
{
    public GameObject door;
    public AudioClip sound;
    private void OnTriggerEnter(Collider other)
    {
        if(other.CompareTag("Player"))
        {
            door.GetComponent().enabled = true;
            AudioSource.PlayClipAtPoint(sound, transform.position);
            this.gameObject.SetActive(false);
        }
    }
}
<タグの設定>
- Playerオブジェクト選択
 - 「Untagged」をクリック
 

- 「Player」を選択
 

- これでTagの設定が完了です。
 

<スクリプトの設定>
- スクリプトをDoorOpenオブジェクトに追加
 - Doorの空欄にはDoorオブジェクトをドラッグ&ドロップ
 - Soundの空欄には音のデータを設定
 

- これで設定完了
 - ゲームを再生して確認
 - 最初はドアが閉まっている。
 

- Playerを前進させてDoorOpenに触れる。
 - 触れた瞬間に効果音がなって、ドアが上方向に移動すれば成功です。
 

*PCで成功したら、Oculus Quest2でも確認してみましょう。