ソラマメブログ

2010年01月15日

はじける花火

はじける花火
 こっそり生き残っていたomallです。
 アレですね。。。ブログさぼっていると、更新するのがとってもメンドーなもんですね。

 それはさておき(さぼってなかったかのように話を進める作戦)、いつもお世話になっているdegu SIMの「みんなの広場」。。。週末のビンゴ以外は、ほとんどおまるさんの遊び場になっているイイところです(ガラクタ増えすぎて、そろそろ怒られそうな気配ムンムンですが)。
はじける花火
 牛さんと仲良く丸焼きになれるツールは、そこはかとなくお気に入りです。

 で、今回ご紹介するのは、こちらっ
はじける花火
 見るからに、手抜き満載のネズミさんです。
 新たにスカルプト・ソフト「TATARA」を購入しまして(すげー高いでやんの、機能充実してるからイイけど)、そのお試しでもあるので、難しいことは抜きです。

 実はこのネズミさん。。。タッチすると、
はじける花火
     ↓  ジャジャーン♪

はじける花火
 ねずみ花火が飛び出ます!! (ネズミから飛び出すねずみ花火。。。いいのかこの安易な発想?)

 ネズミさんには、

default {
 touch_start(integer total_number) {
   llRezObject("nezumi-hanabi" , llGetPos() + llRot2Fwd(llGetRot())*0.7 ,ZERO_VECTOR , llEuler2Rot(<0, 90, 0> * DEG_TO_RAD) , 0);
 }
}

 こんなスクリを仕込んでみました。

touch_start(integer total_number)       どなたでもタッチすると、 "nezumi-hanabi" が、
llGetPos() + llRot2Fwd(llGetRot())*0.7   ネズミさんの中心から前方70センチ離れた位置に、
ZERO_VECTOR                 なんの力も加わることなく、
llEuler2Rot(<0, 90, 0> * DEG_TO_RAD)  Y軸に90度回転した状態で、
llRezObject                    REZされます。

 今さらですが、スクリは英語っぽいので、述語となるllRezObjectが先に書かれるのですね。

 飛び出すねずみ花火は、ネズミさんのインベントリに同梱されております。
 物理をかけているので、回転しながらウロチョロ動き回り(物やアバターに当たると跳ね返ります)、10秒後にパーン!と弾けて、煙だけが残る仕様です。

 で、元気に動き回るようにするのに、こっそり小技を使ってたりします。
 ビルドの段階で、本体となる輪っか(トーラス)を若干「楕円形」にしまして、シッポの部分(トーラス)を水平から軽く角度を加えてるんですよ。
 そうすることで、真円&水平なものより地面にぶつかる抵抗が増えて、ウリャウリャッと動くんです。

 物理の回転で火花を散らしながら動き回って、10秒後にパーン!(煙モクモク)。。。を実行するのに、3つのプリムが必要でした。 この数はそのまま、スクリの数にもなるのですが。。。
はじける花火
 ①が本体(親プリム)になります。 コイツに仕込んだスクリはこんな感じ。。。

default {
 on_rez(integer int) {
  llResetScript();
 }
 state_entry(){
  llParticleSystem([]);
  llTargetOmega(<-2.0,0.0,0.3>,1.6,8);
  llSetTimerEvent(10.0);
  llPlaySound("*shuuuuu",1.0);
 }
 timer(){
  llParticleSystem( [
弾ける時に出る火花のパーチクルのパラメータいろいろ
   ) ] );
  llPlaySound("*ban",1.0);
  llSetTimerEvent(0.0);
  state Finish;
 }
 state_exit(){
 }
}

state Finish{
 state_entry(){
  llSetTimerEvent(1.0);
 }
 timer(){
  llDie();
 }
}

 一番初めの
on_rez(integer int) {
  llResetScript();
}
は、とりあえず「REZしたらスクリをリセットして始めから行ってね」のお約束スクリです。
 書く位置が間違ってるかも知れませんが、問題なく動くのでOK♪

state_entryで、パーチクルはとりあえず停めておいて、

llTargetOmega(<-2.0,0.0,0.3>,1.6,8);  回転ですね。。。(<X,Y,Z>,回転速度,回転する力) モノがトーラスなので、地面に水平な回転はX軸になりました。
 Z軸の0.3は、これまた元気に動き回るための小技です。

llSetTimerEvent(10.0); 10秒後に何かするよーの予告。。。っていうか設定ですね。

llPlaySound("*shuuuuu",1.0); シューーーーって音は、常時鳴りっぱなしなのでstateに入れました。

 さて、timerが発動して10秒後。。。パーチクルで爆発の火花と、
llPlaySound("*ban",1.0); バン!って音がなりまして。。。

 ねずみ花火は消えてなくなるわけですが、そのまま消えちゃうと、子プリムに仕込んだ煙が出ないまま消えちゃう謎。。。
 そこで、「state Finish」に移行させて、改めてタイマーを1秒後に設定しなおし。。。 llDie(); ほら消えた♪ になるわけです。
 その1秒の間に、煙が出てモヤモヤ~っと消えていきます。


 ②のプリムには、

default {
 on_rez(integer int) {
  llResetScript();
 }
 state_entry(){
  llParticleSystem([]);
  llSetTimerEvent(10.0);
 }
 timer(){
  llParticleSystem( [
弾けた時に出る煙のパーチクルのパラメータいろいろ
  ) ] );
  llSetTimerEvent(0.0);
 }
}

 仕様は①とほぼ一緒です。
 10秒後に煙のパーチクルが出るだけ。。。。。。てか、アレじゃん!
 こっちに爆発のバン!の音も入れれば、タイマーイベントを9秒にして。。。そしたら①でstate移行する必要なかったじゃん!
 。。。まいっか♪


 ③の子プリムは、実際は透明プリムにしています(見えなくっていいプリムなので)。
 これは動き回っている時に、シッポの先っぽからパチパチって火花を散らすだけなので、スクリも簡単。

default {
 state_entry(){
  llParticleSystem( [
   火花を散らすパーチクルのパラメータいろいろ
  ) ] );
 }
}

 ②と③のパーチクルは、スクリ的には垂れ流し系です。
 プリムが消えちゃえば、パーチクルも出なくなるので問題なし♪

 実はこのネズミさん。。。連打可能で、
はじける花火
 いっぱい出して、パンパン、パパパパン!なんてこともできる、SIMにやさしいテロアイテムだったりもします。

 まだ売りには出していませんが、気が向いたら売っちゃうので、タダで欲しいと言う方はお早めに連絡くださいませ。


同じカテゴリー(モノ作り)の記事画像
カボチャ的なタイニー
ポーズを自作する
グライダーっぽいの飛ばしてみる
スカルプで丸いテーブル
スカルプでテーブルを。。。
無謀にもスカルプやってみる
同じカテゴリー(モノ作り)の記事
 カボチャ的なタイニー (2009-09-25 20:48)
 ポーズを自作する (2009-09-21 20:37)
 グライダーっぽいの飛ばしてみる (2009-09-19 18:21)
 スカルプで丸いテーブル (2009-09-12 03:11)
 スカルプでテーブルを。。。 (2009-09-09 06:30)
 無謀にもスカルプやってみる (2009-09-07 03:12)
Posted by おまる at 20:42 │モノ作り