リンク作成とリンク解除(llBreakLink,llCreateLink関数)
土星みたいなものをつくってみました。
Touchすると、土星と土星の輪が同時に回転します。
もう一度Touchすると土星のみ回転し、土星の輪は回転しません。
これは、2つのオブジェクトをTouchする度に、
リンクとリンク解除を交互に切り替える為、このような動きになっています。
土星の球(こちらが親プリムになります。)の方に下記スクリプトを使います。
default { state_entry() { llRequestPermissions( llGetOwner() ,PERMISSION_CHANGE_LINKS ); } touch_start(integer total_number) { if(llGetLinkNumber() ==0){ llCreateLink("6d0ef6ec-02bb-3d95-9088-df2137215d63",TRUE); }else{ llBreakLink(2); } llTargetOmega(<0,0,5>,3,3); } } |
llGetLinkNumber関数:integer llGetLinkNumber()
リンク番号を取得する(0の場合はリンクされていないということ。)1の場合は親プリムということです。 |
llCreateLink関数:llCreateLink(key target, integer parent)
一番目のパラメータ :リンクしたいオブジェクトのKEY (例の場合、土星の輪にスクリプトを入れllGetKey()で事前にkey値を取得してます。) 二番目のパラメータ :TRUEまたはFALSE。TRUEの場合は、このオブジェクトが親になります。 |
llBreakLink関数:llBreakLink(integer linknum)
一番目のパラメータ : リンク番号。ここで指定されたリンク番号のリンクを解除します。 リンク番号に2を指定しているのは1が土星の球で2が輪の方だからです。 複数リンクがある場合は、llBreakAllLinks()関数を使うと一度に全てのリンクを解除することができます。 |
リンクとリンク解除にはPERMISSION_CHANGE_LINKS権限が必要なので、
llRequestPermissionsで取得しています。
スクリプト保存時に青いダイアログメッセージがでて権限を与えるかどうか聞かれます。
リンクとリンク解除にはオブジェクトのオーナーであることとmodify権限が必要です。
尚、llTargetOmega関数はこちらを参考にしてくださいねー。回転させるスクリプト