LSL(Linden Script Language)スクリプトTips集

ドアを開ける閉める回転関数(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は使用します。