2.ドアが閉まっている状態

閉まっているドアをタッチすると、ドアオブジェクトの回転を-90度変化させ、「ドアが開いている状態」に遷移する、という2つの処理が実行される。スクリプトでは、まず、ドアオブジェクトの回転を-90度変化させるための準備として、
- 「現在のドアの角度」を調査して
( rotation rot = llGetRot() ) - 「-90度」を数値で表し
( rotation delta = llEuler2Rot(<0,0,PI/-2>) ) - その「合計角度分」を割り出す
( rot = delta * rot )
という処理を実行している。その後、次の処理を実行する。
- ドアオブジェクトの回転を-90度変化させる
( llSetRot(rot) ) - 「ドアが開いている状態」に遷移する
( state open )
3.ドアが開いている状態

基本的に「ドアが閉まっている状態」のスクリプトと同じだ。ただし、開いているドアをタッチして閉めるには、前項と逆方向の角度でドアを回転させる必要がある。つまり、ドアを開くために-90度( llEuler2Rot(<0,0,PI/-2>) )回転させているので、閉めるためには逆方向、つまり、+90度( llEuler2Rot(<0,0,PI/2>) )回転させる。すると、ドアは元の閉まった状態となる。
ドアオブジェクトの回転を変化するための準備ができれば、次の処理を実行させる。
- ドアオブジェクトの回転を+90度変化させる
( llSetRot(rot) ) - 「ドアが閉まっている状態」に遷移する
( state closed )
ドアのスクリプトは以上だ。