*プレーヤーがドアに近づくと、自動的にドアが開くものを作成します。
(1)準備
- プレーヤーとドアを作成する。

(2)スクリプトの作成
- 新規にC#スクリプトを作成
- 名前を「DoorMove」に変更
- 下記のコードを書いてチェック
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class DoorMove : MonoBehaviour
{
private Vector3 pos;
private bool stopKey = false;
void Update()
{
pos = transform.position;
if(!stopKey)
{
// ドアを上方に動かす。
transform.Translate(0, 0.01f, 0);
}
// ドアが指定した高さを超えたらストップさせる。
if(pos.y > 3f)
{
stopKey = true;
}
}
}
(3)設定&再生
- スクリプトをDoorオブジェクトに追加する。
- ゲームを再生して確認
- ドアが上方に移動してストップすれば成功です。

(4)センサーの作成
- 今回はOnTriggerEnter()を使って、プレーヤーがセンサーに触れたらドアが開くようにします。
- Doorオブジェクを「複製」
- 名前を「DoorOpen」に変更
- 「DoorMove」のスクリプトは外すこと(ポイント)
- 位置はDoorの手前に移動
- 「MeshRenderer」のチェックを外して透明化
- 「Is Trigger」にチェックを入れて通過できるようにする(ポイント)

(5)スクリプトの作成
- 新規にC#スクリプトを作成
- 名前を「DoorOpen」に変更
- 下記のコードを書いてチェック
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class DoorOpen : MonoBehaviour
{
public GameObject door;
private void OnTriggerEnter(Collider other)
{
if(other.CompareTag("Player"))
{
// ドアを動かすスクリプトをオンの状態にする。
door.GetComponent<DoorMove>().enabled = true;
this.gameObject.SetActive(false);
}
}
}
(6)設定
- スクリプトを「DoorOpen」オブジェクトに追加
- 空欄に「Door」オブジェクトをドラッグ&ドロップ

- 「Door」オブジェクトを選択
- DoorMoveスクリプトのチェックを外してオフにする(重要ポイント)

- 「Player」のタグを設定(条件)

(7)再生&確認
- 設定が完了したらゲームを再生
- センサーに触れた瞬間、ドアが開けば成功です。
