セカCHU☆

SecondLifeのこと

スターマイン作成その3

2008年02月06日 08時38分08秒 | セカンドライフのすくりぷと
自分で使ってまぁす

お星様の中のスクリプトは、以前も書いたけどLSLの解説ページのサンプルをそのまま使ってるんだー。
なーんて言ってもパーティクルを出す関数って1つだけだから、実はサンプルスクリプトだって、単に受け渡すパラメータが分かりやすいようにグローバル変数として定義してるだけなの
自分で作ったのって、クリックするたびに変数の中身をちょっと変えてパーティクルの関数を呼ぶところだけだよ?

変数の数字をいじって動かしてみてれば、きっと何かが見えてくるんじゃないかな

 ここから下がスクリプトだよ 
integer TOUCHED = 0; //touch counter
// 1: star geyser
// 2: star brilliance
// 3: meteor

integer PART_BOUNCE_MASK= 0;//PSYS_PART_BOUNCE_MASK;
integer PART_EMISSIVE_MASK=PSYS_PART_EMISSIVE_MASK;
integer PART_FOLLOW_SRC_MASK=0; // PSYS_PART_FOLLOW_SRC_MASK
integer PART_FOLLOW_VELOCITY_MASK=0; // PSYS_PART_FOLLOW_VELOCITY_MASK
integer PART_INTERP_COLOR_MASK=PSYS_PART_INTERP_COLOR_MASK ;
integer PART_INTERP_SCALE_MASK=PSYS_PART_INTERP_SCALE_MASK;
integer PART_TARGET_LINEAR_MASK=0; // PSYS_PART_TARGET_LINEAR_MASK
integer PART_TARGET_POS_MASK=0; // PSYS_PART_TARGET_POS_MASK
integer PART_WIND_MASK=0; //PSYS_PART_WIND_MASK ;

integer PART_PATTERN = PSYS_SRC_PATTERN_EXPLODE ;
//integer PART_PATTERN = PSYS_SRC_PATTERN_ANGLE;
//integer PART_PATTERN = PSYS_SRC_PATTERN_ANGLE_CONE;
//integer PART_PATTERN = PSYS_SRC_PATTERN_DROP;

float PART_START_ALPHA = 1.0;
float PART_END_ALPHA = 0.0;
vector PART_START_COLOR = <1.0,1.0,1.0>;
vector PART_END_COLOR = <0.6,0.6,0.6>;
vector PART_START_SCALE = <0.32,0.32,0.0>;
vector PART_END_SCALE = <1.0,1.0,0.0>;
float SRC_MAX_AGE = 0.0;
float PART_MAX_AGE = 3.5 ;
vector PART_ACCEL = <0.0,1.0,-1.0>;
float PART_ANGLE_BEGIN = 0; //PI ;
float PART_ANGLE_END = 2; //PI ;
integer PART_BURST_COUNT = 4 ;
float PART_BURST_RADIUS = 10.0 ;
float PART_BURST_RATE = 0.0 ;
float PART_BURST_SPEED_MIN = 0.0 ;
float PART_BURST_SPEED_MAX = 0.0 ;
vector PART_OMEGA = <0.0,0.0,15.0> ;
string PART_TEXTURE = "star_particle" ;
key PART_TARGET_KEY = NULL_KEY ;

SetParticle(integer on){
  if (on){
    llParticleSystem(
    [  PSYS_PART_FLAGS , PART_BOUNCE_MASK |
        PART_EMISSIVE_MASK |
        PART_FOLLOW_SRC_MASK |
        PART_FOLLOW_VELOCITY_MASK |
        PART_INTERP_COLOR_MASK |
        PART_INTERP_SCALE_MASK |
        PART_TARGET_LINEAR_MASK |
        PART_TARGET_POS_MASK |
        PART_WIND_MASK
      ,PSYS_SRC_PATTERN, PART_PATTERN
      ,PSYS_PART_START_ALPHA, PART_START_ALPHA
      ,PSYS_PART_END_ALPHA, PART_END_ALPHA
      ,PSYS_PART_START_COLOR, PART_START_COLOR
      ,PSYS_PART_END_COLOR, PART_END_COLOR
      ,PSYS_PART_START_SCALE, PART_START_SCALE
      ,PSYS_PART_END_SCALE, PART_END_SCALE
      ,PSYS_SRC_MAX_AGE, SRC_MAX_AGE
      ,PSYS_PART_MAX_AGE, PART_MAX_AGE
      ,PSYS_SRC_ACCEL, PART_ACCEL
      ,PSYS_SRC_ANGLE_BEGIN, PART_ANGLE_BEGIN
      ,PSYS_SRC_ANGLE_END, PART_ANGLE_END
      ,PSYS_SRC_BURST_PART_COUNT, PART_BURST_COUNT
      ,PSYS_SRC_BURST_RADIUS, PART_BURST_RADIUS
      ,PSYS_SRC_BURST_RATE, PART_BURST_RATE
      ,PSYS_SRC_BURST_SPEED_MIN, PART_BURST_SPEED_MIN
      ,PSYS_SRC_BURST_SPEED_MAX, PART_BURST_SPEED_MAX
      ,PSYS_SRC_OMEGA, PART_OMEGA
      ,PSYS_SRC_TEXTURE, PART_TEXTURE
      ,PSYS_SRC_TARGET_KEY, PART_TARGET_KEY
    ]);
  }else{
    llParticleSystem([]);
  }
}

default {
  state_entry(){
    }
    touch_start(integer detected) {
       if (TOUCHED == 0){
          TOUCHED = 1;                 //star geyser
          PART_PATTERN = PSYS_SRC_PATTERN_ANGLE; //oogigata
          PART_MAX_AGE = 1.5 ;         //sukosi mijikaku
          PART_ACCEL = <0.0,0.0,-5.0>; //hayaku rakka suru houkou
          PART_BURST_COUNT = 4 ;       //sukosi oomeni
          PART_BURST_RADIUS = 0.0 ;    //han i nasi
          PART_BURST_RATE = 0.1 ;      //subayaku tobidasu
          PART_BURST_SPEED_MIN = 10.0 ;//pyu-n to subayai
          PART_BURST_SPEED_MAX = 0.3 ; //poyo-n to osoi
          SetParticle(TRUE);
       } else if (TOUCHED == 1){
          TOUCHED = 2;                 //star brilliance
          PART_PATTERN = PSYS_SRC_PATTERN_EXPLODE ; //bakuhatu
          PART_MAX_AGE = 3.5 ;         //sukosi nagaku
          PART_ACCEL = <0.0,0.0,0.0>; //sonoba de teisi
          PART_BURST_COUNT = 3 ;       //sukosi oomeni
          PART_BURST_RADIUS = 8.0 ;   //han i hiroku
          PART_BURST_RATE = 0.0 ;      //renzoku de takusan
          PART_BURST_SPEED_MIN = 0.0 ; //speed nasi
          PART_BURST_SPEED_MAX = 0.0 ; //speed nasi
          SetParticle(TRUE);
       } else if (TOUCHED == 2){
          TOUCHED = 3;                 //meteor
          PART_PATTERN = PSYS_SRC_PATTERN_EXPLODE ; //bakuhatu
          PART_MAX_AGE = 3.5 ;         //sukosi nagaku
          PART_ACCEL = <0.0,1.0,-1.0>; //rakka suru houkou
          PART_BURST_COUNT = 3 ;       //sukosi oomeni
          PART_BURST_RADIUS = 8.0 ;   //han i hiroku
          PART_BURST_RATE = 0.0 ;      //renzoku de takusan
          PART_BURST_SPEED_MIN = 0.0 ; //speed nasi
          PART_BURST_SPEED_MAX = 0.0 ; //speed nasi
          SetParticle(TRUE);
       } else {
        TOUCHED = 0;
        SetParticle(FALSE);
       }
    }

}
 スクリプトはここまでー 

スターマイン作成その2

2008年02月06日 08時21分45秒 | セカンドライフのものづくり
スターガイザーに名前を変えました 商品力もちょっと強化だよ


気分でお星様のスクリプトを直接書き換えてたのを、クリックで順番に変わっていくようにしましたぁ

star geyser(星の噴水)star brilliance(星の瞬き)meteor(流れ星)ストップ・・・

この順序でぐるぐる繰り返すよ

これで、ほんのちょっぴり商品力高まった?
ついでにパッケージみたいなのも作っちゃえ えいっ
さらにさらに妄想は膨らんで・・・
これを売るつもりは無いけれど、もし売るとなったら、値段はお幾らくらいになるのかな?

作るのに掛かったお金は、アップロード代が30L$だけ。
実は誰でも簡単に出来るし、データも公開してるから、アップロードなんかが面倒くさい人用のお値段ってことになっちゃうかな。
そもそも、パーティクルジェネレーターっていう便利な装置を使えば、無料で似たようなのが出来ちゃう。
だからそんなに高くはできないよね?
だけど、freeにしちゃうとどれだけの人が貰ってくれたのかが分からないみたいだし・・・
やっぱり気になるよ、数知りたいもん。
だから、4L$~8L$くらいかなぁ。
1時間のcampで買えるお値段くらいが限度かなって、私は思いました


自分で作ったものは、どんどん使ってたりします
ちょっぴりうれしはずかしどっきどき