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