2009年02月08日

びっくり箱

たびたびで申し訳ありませんっ(汗

友人からのアイテムの相談なのですが、イベント用にプレゼントの箱が欲しいとのことなのです。
私は箱部分を作ることになったのですが、できれば「タッチで箱の蓋が飛び出して床に落ちると面白いね」
という話になり、そんなびっくり箱的なスクリプトがないかと探していました。

似たようなもので、REZしてタッチすると飛んでいくロケットのスクリプトがあったので試してみたのですが、
どうもそれだと箱と蓋部分をリンクさせないと一緒に収納できない(1つのオブジェクトとして認識してくれない)みたいです。
リンクさせると箱ごと飛んでしまい、よろしくありません。
そして落ちてきません。
TRUEではなく、FALSEではないかと思い、色々試してはみたのですが…

そこで何かよいスクリプトはありますでしょうか?

・箱を手に装着する
・箱の蓋をタッチすると蓋が煙と共にポンと飛び、床に落ちて数秒で消滅

という動作がさせたいのです。
SLではたまに見掛けるスクリプトなのですが仕組みが分かりません。

バレンタインイベントに使いたいらしいので、近い効果が出れば似たようなものでも構いません。

どうかお知恵を貸してください。

P.S. タッチでオブジェにSAYさせるスクリプトですが、やはり日本語で喋らせるには変換する必要があるのでしょうか?



同じカテゴリー(スクリプト関連)の記事画像
オブジェクトのリンクとタッチで開く扉
自動チャットを止めたい
テレポートするとアニメーションが解除される
同じカテゴリー(スクリプト関連)の記事
 テクスチェンジのHUDについて (2015-07-01 04:51)
 モール用のプリムカウンターを探しています (2014-11-29 20:09)
 連続するアニメーションの処理 (2014-08-24 03:23)
 オブジェクトの上にフローティングテキストを出す。 (2014-08-22 16:46)
 チャットログの盗聴について (2014-02-03 03:43)
 椅子に座った後で位置調整できるスクリプト (2013-03-24 16:37)

Posted by シグルーン  at 23:52 │Comments(7)スクリプト関連

この記事へのコメント
ライブラリーに入ってる、ポップガンのスクリプトをいじったら簡単だよ^^
Posted by 青色 at 2009年02月08日 23:56
>青色さま
ありがとうございます!
ライブラリーは盲点でした!
早速試してみます!^^
Posted by シグルーン at 2009年02月09日 00:14
>さけびさま
なるほど、バージョン変更されたのですね^^
ありがとうございます!




ポップガンのスクリプトを見てみました。
…何となくは分かるのですが、どこを変更すればいいのかいまいち分かりませんでした。
そして動きませんでした…

もし宜しければどなたか手に持った箱をクリックするとものが飛び出して床に落ち、一定時間で消滅するスクリプトを教えて貰えませんでしょうか?

勉強したいのは山々なのですが、バレンタインイベントに合わせて急いで作らないといけないのです><
Posted by シグルーン at 2009年02月10日 21:22
不親切ですが・・・これで上手くいくだろうか?

オブジェクト
1.箱と、蓋を作る
2.箱と蓋が、リンクされているオブジェクトを作る
3.別の蓋に、消すためのスクリプトを入れる
4.2.のオブジェクトのコンテンツに、3.の蓋を入れる
5.2.のオブジェクトにREZさせるスクリプトを入れる

( 3.の蓋に入れるスクリプト )
on_rez( integer param )イベント
( object_rez( key id ) イベント? )で、
llSetTimerEvent( ( 消すまでの秒数 ) );
timer() イベントで、 llDie();

( 2.のオブジェクトに入れるスクリプト )
1.タッチされたら、オブジェクトの蓋部分を透明にして、コンテンツに入れた蓋をREZする
2.煙は・・・llParticleSystem( list parameters ) どっかにサンプルがあったような・・・

リンクしている 子プリムを透明にする関数
llSetLinkAlpha( integer linknumber, float alpha, integer face )

箱をルートプリムにして、蓋のリンク番号が2の場合
llSetLinkAlpha( 2, 0, ALL_SIDES );

蓋をREZする関数
llRezObject( string inventory, vector pos, vector vel, rotation rot, integer param )

rotation rot = llGetRot();
vector OF_RezZ = llRot2Up( rot ); // 飛び出す方向がZ方向なら
float OF_CmNZ = 0.2; // オブジェクトの中心からのオフセット、作ったオブジェクトに合わせる
vector pos = llGetPos() + ( OF_RezZ * OF_CmNZ );
rot = rot * llEuler2Rot( < 0.0, 0.0, 270.0 > * DEG_TO_RAD ); // REZされる時の蓋の向き、ZERO_ROTATION のままでよいのなら必要なし
llRezObject( ( コンテンツ内の蓋の名前 ), pos, OF_RezZ * ( 蓋の飛ぶ速度 m/s ), rot, 0 );

どなたか補足を お願いします。
Posted by くるじん at 2009年02月11日 08:08
REZさせる蓋に、スクリプトは必要ないかも・・・臨時設定にしておけばよい
Posted by くるじん at 2009年02月11日 08:12
物理設定はしないとダメだな・・・
・・・すみません、適当で・・・
Posted by くるじん at 2009年02月11日 08:14
>くるじんさま
アドバイスありがとうございます!
スクリプト初心者には敷居が高い課題ですが、イベント成功のため、
何とか頑張って作ってみたいと思います^^

補足アドバイスなどありましたらまたお願いいたしますm(_ _)m
Posted by シグルーン at 2009年02月11日 17:22
<ご注意>
書き込まれた内容は公開され、ブログの持ち主だけが削除できます。