(ドアの作成)
- 新規に「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でも確認してみましょう。