ドアを開ける閉める回転関数(llSetRot関数)
以下のスクリプトでは、オブジェクトをTouchするとドアが閉まっているときには開き、
開いているときには閉まります。90度の開閉ドアです。「どこでもドア」のイメージです。
integer isOpen = FALSE;
default { touch_start(integer total_number) { rotation doorRot = llGetRot(); if(isOpen==FALSE){ llSetRot(doorRot * llEuler2Rot(<0,0,PI_BY_TWO>)); isOpen = TRUE; }else{ llSetRot(doorRot * llEuler2Rot(<0,0,-PI_BY_TWO>)); isOpen = FALSE; } } } |
llGetRot関数() 元のドアの角度(今の状態)を取得します。 |
llSetRot関数() 角度を設定します。 一番目のパラメータ : (元の角度 * 回転角度)は今の状態からローカル座標軸にそって回転させます。 PI_BY_TWOは、90度です。 このような書き方もできます。llSetRot(doorRot * llEuler2Rot(<0,0,90*DEG_TORAD>)) |
ドアの板は円柱を薄くして、半分になるようパスカットすることにより
回転軸がオブジェクトの中心ではなく、左側にくるようにしています。
以前、第二回スクリプトTips回転させるでllTargetOmega関数を使いましたが、
継続的な回転の場合にllTargetOmegaは使用します。