Unityのオブジェクトで、自動ドアを作ってみましょう。
近づけばドアが自動オープン、通過した後は閉まります。
また、ドアが動いている途中でも、離れると閉まります。
OnTriggerを使って、プレーヤーの当たり判定から、ドアの開閉を制御しています。
関連記事:触れると開くドア
オブジェクトの準備
平面(Plane)とCubeを作成して、色をつけます。
Cubeは、Playerという名前に変更し、座標を変更します。
Playerにリジッドボディを追加します。
ゲームビューではこのように配置されています。
続いて、ドアを作成します。
Cubeを作成。名前をDoorObjectにして、座標を変更します。
空のオブジェクトを作成します。
空のオブジェクトの名前をDoorに変更し、位置を0にします。
DoorObjectを、Doorの中に入れて、親子関係をつくります。
ゲームビューではこのように配置されています。
次に、当たり判定を作成します。
Cubeを作成し、名前をTouchAreaに変更。
位置とサイズを変更し、トリガーにするにチェックを入れます。
TouchAreaを透明にしましょう。
マテリアルを新規作成し、名前をToumeiにします。
Rendering ModeをFadeに変更し、Aの値を0にします。
作成して透明マテリアルを、TouchAreaに付けます。
自動ドアのスクリプト
PlayerMove.csを作成し、Playerに追加します。
PlayerMove.csを記述します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class PlayerMove : MonoBehaviour { public bool isArea; void Start() { isArea = false; } void Update() { float dx = Input.GetAxis("Horizontal") * Time.deltaTime * 3; float dz = Input.GetAxis("Vertical") * Time.deltaTime * 3; transform.position = new Vector3 (transform.position.x + dx, transform.position.y, transform.position.z + dz); } void OnTriggerStay(Collider other) { if (other.gameObject.name == "TouchArea" ) { isArea = true; } } void OnTriggerExit(Collider other) { if (other.gameObject.name == "TouchArea" ) { isArea = false; } } } |
続いて、ドアのほうのスクリプトを作ります。
DoorOpen.csを作成し、Doorに追加します。
DoorOpen.csを記述します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class DoorOpen : MonoBehaviour { private Vector3 pos; public GameObject player; void Update() { pos = transform.position; if(player.GetComponent<PlayerMove>().isArea == true) { if(pos.x < 2f) { transform.Translate(0.02f, 0, 0); } } if(player.GetComponent<PlayerMove>().isArea == false) { if(pos.x > 0) { transform.Translate(-0.02f, 0, 0); } } } } |
Playerのフィールドに、Playerオブジェクトを入れます。
ゲームプレイしてみましょう。
近づけばドアが開きますが、開いている途中で離れた場合、ドアが閉まります。
関連記事:触れると開くドア