ぶつかると開くドアを作ってみましょう。
Cubeを操作し、ドアに触れたタイミングで、扉が開きます。
1秒間だけ開いた後、扉は閉まります。

関連記事:
自動ドアのしくみ
パスワード付きドアの作成
HingeJointを使ってドアを作成
ドア側のスクリプト
PlaneとCubeを作成し、Cubeの位置とサイズを変更します。

Cubeの名前をDoorに変更し、色をつけます。

シーンビューではこのように配置されています。

空のオブジェクトを作成します。

GameObjectをDoorManageという名前に変更。
位置を1にして、Doorに右端まで持ってきます。

DoorManageの位置は、このように右端に配置されています。

DoorManageの中にDoorを入れて、親子関係をつくります。

DoorOpen.csを作成し、DoorManageに追加します。

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  | 
						using System.Collections; using System.Collections.Generic; using UnityEngine; public class DoorOpen : MonoBehaviour {     public void DoorMove()     {         StartCoroutine("DoorRotate");     }     IEnumerator DoorRotate()     {         for (int turn=0; turn<90; turn++)         {             transform.Rotate(0,1,0);             yield return new WaitForSeconds(0.01f);         }         yield return new WaitForSeconds(1.0f);         for (int turn=0; turn<90; turn++)         {             transform.Rotate(0,-1,0);             yield return new WaitForSeconds(0.01f);         }     } }  | 
					
プレーヤー側のスクリプト
次に、プレーヤーとしてCubeを作成して、位置を変更します。

判別しやすいように、Cubeに色をつけます。

Cubeにリジッドボディを追加します。

CubeMove.csを作成し、Cubeに追加します。

CubeMove.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  | 
						using System.Collections; using System.Collections.Generic; using UnityEngine; public class CubeMove : MonoBehaviour {     public GameObject door;     void Start()     {         door = GameObject.Find("DoorManage");     }        void Update()     {         float dx = Input.GetAxis("Horizontal") * Time.deltaTime * 3.0f;         float dz = Input.GetAxis("Vertical") * Time.deltaTime * 3.0f;         transform.position = new Vector3         (             transform.position.x + dx, transform.position.y, transform.position.z + dz         );     }      private void OnCollisionEnter(Collision collision)     {         if (collision.gameObject.name == "Door" )         {             door.GetComponent<DoorOpen>().DoorMove();         }     } }  | 
					
ゲームプレイして、ドアに触れてみましょう。

ドアに接触すれば開き、1秒後に元に閉まります。
OnCollisionEnterを使ってドアの当たり判定つけ、当たったタイミングで、ドア側のDoorMove()を実行。
コルーチンを使用し、ゆっくり90°回転した後、1秒待ってから再び-90°回転していきます。