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

テクスチャ占い(llScaleTexture,llFrand,llOffsetTexture関数)

占いをつくったのでご紹介します。
オブジェクトTouchすると占い結果が表示されます。3秒後に元の表示に戻ります。

  

4枚のテクスチャを用意してもいいのですが、テクスチャをアップロードするには10L$かかるので、
このような一枚のテクスチャをアップロードし、表示位置をずらして使用することで節約してます。

下記のスクリプトを使います。

default
{
  state_entry()
  {
      llScaleTexture(0.5,0.5 ,ALL_SIDES);
      llOffsetTexture(-0.250,0.250,ALL_SIDES);
  }
  touch_start(integer total_number)
  {
      float offsetX;
      float offsetY;
      float getval = llFrand(3.0);
      if ( getval < 1.0){
          offsetX=0.250;
          offsetY=0.250;
      }else if ( getval < 2.0){
          offsetX=-0.250;
          offsetY=-0.250;
      }else{
          offsetX=0.250;
          offsetY=-0.250;
      }
      llOffsetTexture(offsetX,offsetY,ALL_SIDES);
      llSleep(3.0);
      llResetScript();
  }

}
llScaleTexture関数:llScaleTexture(float horizontal, float vertical, integer side)
一番目のパラメータ : 縦(X)サイズ
二番目のパラメータ : 横(Y)サイズ
三番目のパラメータ : 面番号
指定された面のテクスチャの縦(X)サイズと横(Y)サイズを設定する
今回のサンプル場合、縦と横にそれぞれ2枚のテクスチャが表示されますので、サイズは1/2=0.5になります。
llFrand関数:llFrand(float max)
一番目のパラメータ : 最大値(<注意>取得値は、最大値未満になります!)
0.0 以上 max 未満のランダム浮動小数値を取得します。
llOffsetTexture関数:llOffsetTexture(float horizontal, float vertical, integer side)
一番目のパラメータ : 縦ズレ(X)
二番目のパラメータ : 横ズレ(Y)
三番目のパラメータ : 面番号
指定された面のテクスチャのズレ縦(X)と横ズレ(Y)を設定する
テクスチャの中心はX=0,Y=0です。
今回のサンプル場合、縦と横にそれぞれ2枚のテクスチャが表示され、それぞれの中心値はその1/2なので、
(1/2)÷2=0.25をX軸Y軸でズラすことによってそれぞれの中心に表示させています。
llResetScript関数:llResetScript()
リセットします。