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

結合されたリンクオブジェクトにメッセージ(命令)を出す

前にご紹介したスクリプトTipsテクスチャーを動かすの応用編です。
例えば、10メートルを超える大きなプールを作るとき1プリムではできないので、
複数プリムをリンク(結合)させて水面を作りますよね。
今回はリンクさせたプリムのテクスチャを同時に動かすスクリプトサンプルです。

オブジェクトを右クリックしパイメニューの「Touch」を選ぶと
親のテクスチャと子のテクスチャが同時にうごきます。
親プリム(マスタープリム)にはスクリプトを入れました。

default {
  touch_start(integer total_number){
    llMessageLinked( LINK_SET, 0, "", NULL_KEY);
  }
  link_message(integer sender_num, integer num, string msg, key id){
    llSetTextureAnim(ANIM_ON | SMOOTH | LOOP ,0,0,0,0,1.0,0.1 );
  }
}
llMessageLinked関数
一番目のパラメータ : メッセージを送信するプリムの番号または、下記LINK定数
(LINK_ROOT(ルートプリム)、LINK_SET(全部)、LINK_ALL_OTHERS(自分以外のプリム)、
LINK_ALL_CHILDREN(全子プリム)、LINK_THIS(自プリム) )
二番目のパラメータ : 送信する数値
三番目のパラメータ : 送信する文字列
四番目のパラメータ : 送信するKey
link_messageイベント
一番目のパラメータ : 受信したプリム番号又はLINK定数
二番目のパラメータ : 受信した数値
三番目のパラメータ : 受信した文字列
四番目のパラメータ : 受信したKey
llMessageLinked関数によってlink_messageイベントが発生します。ここでは親プリムから命令を受け、
この親プリムのlink_messageイベントが発生します。

子のプリムにはスクリプトを入れます。

default {
  link_message(integer sender_num, integer num, string msg, key id){
    llSetTextureAnim(ANIM_ON | SMOOTH | LOOP ,0,0,0,0,1.0,0.1 );
  }
}
link_messageイベント
ここでは親プリムから命令を受け、この子プリムのlink_messageイベントが発生します。
パラメータは上記と同じなので省略します。

(参考)リンク(結合)した場合、最後に選択したプリムがマスタープリムとなります。
llSetTextureAnim関数については、こちらのページを参考にしてください。テクスチャーを動かす