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

おまたせしましたパーティクルサンプル集です。
ここにあるパーティクルは小さめの範囲に設定してあります。
広範囲にパーティクルをまき散らすとご迷惑になりますから、
サイズを変更するときは広いsandboxでおこなってくださいね。

雨のパーティクル

default {
  state_entry(){
  llParticleSystem( [
      PSYS_SRC_TEXTURE,
      llGetInventoryName(INVENTORY_TEXTURE, 0),
      PSYS_PART_START_SCALE, <0.1,0.5, 0>,
      PSYS_PART_END_SCALE, <0.05,4.0, 0>,
      PSYS_PART_START_COLOR, <1,1,1>,
      PSYS_PART_END_COLOR, <1,1,1>,
      PSYS_PART_START_ALPHA, 0.7,
      PSYS_PART_END_ALPHA, 0.5,
      PSYS_SRC_BURST_PART_COUNT, 1,
      PSYS_SRC_BURST_RATE, 0.05,
      PSYS_PART_MAX_AGE, 1.0,
      PSYS_SRC_MAX_AGE, 0.0,
      PSYS_SRC_PATTERN, 8,
      PSYS_SRC_ACCEL, <0.0,0.0, -5.2>,
      PSYS_SRC_BURST_RADIUS, 1.0,
      PSYS_SRC_BURST_SPEED_MIN, 0.0,
      PSYS_SRC_BURST_SPEED_MAX, 0.0,
      PSYS_SRC_ANGLE_BEGIN, 0*DEG_TO_RAD,
      PSYS_SRC_ANGLE_END, 30*DEG_TO_RAD,
      PSYS_SRC_OMEGA, <0,0,0>,
      PSYS_PART_FLAGS, ( 0
           | PSYS_PART_INTERP_COLOR_MASK
           | PSYS_PART_INTERP_SCALE_MASK
           | PSYS_PART_WIND_MASK
      ) ] );
  }
}

雪のパーティクル

default {
  state_entry(){
  llParticleSystem( [
      PSYS_SRC_TEXTURE,llGetInventoryName(INVENTORY_TEXTURE, 0),
      PSYS_PART_START_SCALE, <0.1,0.1, 0>,
      PSYS_PART_END_SCALE, <0.1,0.1, 0>,
      PSYS_PART_START_COLOR, <1,1,1>,
      PSYS_PART_END_COLOR, <1,1,1>,
      PSYS_PART_START_ALPHA, 0.7,
      PSYS_PART_END_ALPHA, 0.3,
      PSYS_SRC_BURST_PART_COUNT, 1,
      PSYS_SRC_BURST_RATE, 0.1,
      PSYS_PART_MAX_AGE, 3.0,
      PSYS_SRC_MAX_AGE, 0.0,
      PSYS_SRC_PATTERN, 8,
      PSYS_SRC_ACCEL, <0.0,0.0, -0.2>,
      PSYS_SRC_BURST_RADIUS, 1.5,
      PSYS_SRC_BURST_SPEED_MIN, 0.0,
      PSYS_SRC_BURST_SPEED_MAX, 0.1,
      PSYS_SRC_ANGLE_BEGIN, 0*DEG_TO_RAD,
      PSYS_SRC_ANGLE_END, 45*DEG_TO_RAD,
      PSYS_SRC_OMEGA, <0,0,0>,
      PSYS_PART_FLAGS, ( 0
          | PSYS_PART_INTERP_COLOR_MASK
          | PSYS_PART_INTERP_SCALE_MASK
          | PSYS_PART_EMISSIVE_MASK
          | PSYS_PART_WIND_MASK
      ) ] );
  }
}

煙のパーティクル

default {
  state_entry(){
  llParticleSystem( [
      PSYS_SRC_TEXTURE, llGetInventoryName(INVENTORY_TEXTURE, 0),
      PSYS_PART_START_SCALE, <.1,.1, 0>,
      PSYS_PART_END_SCALE, <1,1, 0>,
      PSYS_PART_START_COLOR, <1,1,1>,
      PSYS_PART_END_COLOR, <1,1,1>,
      PSYS_PART_START_ALPHA, 0.6,
      PSYS_PART_END_ALPHA, 0.0,
      PSYS_SRC_BURST_PART_COUNT, 1,
      PSYS_SRC_BURST_RATE, 0.03,
      PSYS_PART_MAX_AGE, 2.0,
      PSYS_SRC_MAX_AGE, 0.0,
      PSYS_SRC_PATTERN, 8,
      PSYS_SRC_ACCEL, <0.0,0.0, 0.1>,
      PSYS_SRC_BURST_RADIUS, 0.5,
      PSYS_SRC_BURST_SPEED_MIN, 0.0,
      PSYS_SRC_BURST_SPEED_MAX, 0.0,
      PSYS_SRC_ANGLE_BEGIN, 90*DEG_TO_RAD,
      PSYS_SRC_ANGLE_END, 90*DEG_TO_RAD,
      PSYS_SRC_OMEGA, <0,0,0>,
      PSYS_PART_FLAGS, ( 0
          | PSYS_PART_INTERP_COLOR_MASK
          | PSYS_PART_INTERP_SCALE_MASK
          | PSYS_PART_EMISSIVE_MASK
          | PSYS_PART_WIND_MASK
          | PSYS_PART_BOUNCE_MASK
      ) ] );
  }
}

光線のパーティクル

default {
  state_entry(){
  llParticleSystem( [
      PSYS_SRC_TEXTURE, llGetInventoryName(INVENTORY_TEXTURE, 0),
      PSYS_PART_START_SCALE, <0.0,0.8, 0>,
      PSYS_PART_END_SCALE, <0.1,1.0, 0>,
      PSYS_PART_START_COLOR, <1,1,1>,
      PSYS_PART_END_COLOR, <1,0,0>,
      PSYS_PART_START_ALPHA, 1.0,
      PSYS_PART_END_ALPHA, 0.0,
      PSYS_SRC_BURST_PART_COUNT, 5,
      PSYS_SRC_BURST_RATE, 0.1,
      PSYS_PART_MAX_AGE, 1.0,
      PSYS_SRC_MAX_AGE, 0.0,
      PSYS_SRC_PATTERN, 4,
      PSYS_SRC_ACCEL, <0.0,0.0,0.0>,
      PSYS_SRC_BURST_SPEED_MIN, 1.0,
      PSYS_SRC_BURST_SPEED_MAX, 3.0,
      PSYS_SRC_ANGLE_BEGIN, 0*DEG_TO_RAD,
      PSYS_SRC_ANGLE_END, 0*DEG_TO_RAD,
      PSYS_SRC_OMEGA, <0,0,0>,
      PSYS_PART_FLAGS, ( 0
          | PSYS_PART_INTERP_COLOR_MASK
          | PSYS_PART_INTERP_SCALE_MASK
          | PSYS_PART_EMISSIVE_MASK
          | PSYS_PART_FOLLOW_VELOCITY_MASK
      ) ] );
  }
}

丸い光のパーティクル

default {
  state_entry(){
  llParticleSystem( [
      PSYS_PART_START_ALPHA, 1.0,
      PSYS_PART_END_ALPHA, 0.0,
      PSYS_PART_START_COLOR ,<0,1,1>,
      PSYS_PART_START_SCALE,< 3.0, 3.0, 0 >,
      PSYS_SRC_BURST_PART_COUNT,3,
      PSYS_SRC_BURST_RATE,4.0,
      PSYS_PART_MAX_AGE,3.9,
      PSYS_SRC_PATTERN,PSYS_SRC_PATTERN_DROP,
      PSYS_PART_FLAGS,PSYS_PART_INTERP_COLOR_MASK
       ] );
  }
}

ターゲットへ向かうパーティクル

黄色いプリムからピンクのプリムの方へパーティクルが動いていきます。
二つのプリムはリンク(結合)しています。黄色がマスタプリムでピンクが子プリムです。

default {
  state_entry(){
  llParticleSystem( [
      PSYS_SRC_TARGET_KEY, llGetLinkKey(2) ,
      PSYS_SRC_PATTERN, PSYS_SRC_PATTERN_ANGLE,
      PSYS_PART_START_SCALE, <0.2,0.2, 0>,
      PSYS_PART_END_SCALE, <0.2,0.2, 0>,
      PSYS_PART_MAX_AGE, 7.0,
      PSYS_PART_START_COLOR, <1,1,0>,
      PSYS_PART_END_COLOR, <1,0,1>,
      PSYS_SRC_OMEGA, <0,0,0>,
      PSYS_SRC_ACCEL, <0,0,0>,
      PSYS_SRC_ANGLE_BEGIN, 0*DEG_TO_RAD,
      PSYS_SRC_ANGLE_END, 10.0 *DEG_TO_RAD,
      PSYS_PART_FLAGS, ( 0
           | PSYS_PART_TARGET_POS_MASK
           | PSYS_PART_INTERP_COLOR_MASK
           | PSYS_PART_EMISSIVE_MASK
      ) ] );
  }
}

テクスチャのパーティクル

テクスチャのパーティクルを飛ばすことができます。
今回はハートのテクスチャ(テクスチャ名=heart)を作成し、スクリプトにセットしました。

default {
  state_entry(){
  llParticleSystem( [
      PSYS_SRC_TEXTURE, "heart",
      PSYS_SRC_PATTERN, PSYS_SRC_PATTERN_EXPLODE,
      PSYS_PART_START_SCALE, <0.2,0.2, 0>,
      PSYS_PART_END_SCALE, <0.5,0.5, 0>,
      PSYS_PART_MAX_AGE, 1.0,
      PSYS_SRC_MAX_AGE, 0.0,
      PSYS_SRC_ACCEL, <0.0,0.0, 0.5>,
      PSYS_PART_FLAGS, ( 0
           | PSYS_PART_INTERP_SCALE_MASK
           | PSYS_PART_WIND_MASK
      ) ] );
  }
}

スクリプトと一緒の場所にテクスチャもセットしてくださいねー。
応用して魚のテクスチャをつくれば、海や川の魚ができますね。


サンプルは随時増やしていきますので、お楽しみにー。