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にやさしいテロアイテムだったりもします。
まだ売りには出していませんが、気が向いたら売っちゃうので、タダで欲しいと言う方はお早めに連絡くださいませ。
Posted by おまる at 20:42
│モノ作り