ソラマメブログ

2008年05月05日

最後の仕上げ:ポーズボールを仕込む

さて、ちょっとリアルで楽しく外出してきましたので、続きをば。

最後に作ったポーズまたはアニメを仕込んだポーズボールを作ります。
コレには、スクリプトを使います。

ポーズボールに座ると、ボールは透明になって消え、立ち上がると再び出現するようにします。


ざっくり手順。
球などポーズボールとなるプリムをREZする→プリムをEDITし、コンテンツのなかにアニメファイルとスクリプトを入れる
コレで完成です。


スクリプトは、ちょっと難しいと思いますので、「BlackSheep-LSL@Wiki」さんのものを使わせていただきます。
同サイトには、他にもスクリプトの作り方や色々なすごく役に立つ記事が満載です。このスクリプトについても詳しい説明をされていますので、ぜひ見てみてください。


では、はじめましょう♪♪♪ 

まず、セカンドライフにログインして、どこか作業のできるサンドボックスなどで、プリム(今回は球を使いますね)をREZします。

最後の仕上げ:ポーズボールを仕込む

BUILD(編集)メニューのCONTENTS(コンテンツ)タブを開くと、「New Script」というボタンがありますので、このボタンをぽちっとクリックしてください。
コンテンツの中身に、新しいスクリプトが生成されました。

できたら、このスクリプトをダブルクリックで開きます。

最後の仕上げ:ポーズボールを仕込む


この、開いたスクリプトの中身を、ポーズボールのスクリプトに入れ替えます。
先ほどの、BlackSheep-LSL@Wiki」さんのサイトから使用させていただきます。

↓このソースをコピペ。



string animation_name="pose"; // ①実行するアニメーション
key siton = NULL_KEY; // 現在座っている人のUUIDを管理する変数
vector sit_pos = <0.0, -0.3, 0.4>; // ②座る位置
vector sit_rot = <0.0, 0.0, 270.0>; // ③座る角度
default {
state_entry(){
llSitTarget(sit_pos, llEuler2Rot(sit_rot * DEG_TO_RAD));
}

changed(integer change){
if (change & CHANGED_LINK) {
key av = llAvatarOnSitTarget();
if (siton != NULL_KEY) {
if (av == NULL_KEY) { // 座ってた人が立った
llStopAnimation(animation_name);
llSetAlpha(1.0, ALL_SIDES);
siton = NULL_KEY;
}
} else {
if (av != NULL_KEY) { // 誰か座った
siton = av;
llSetAlpha(0.0, ALL_SIDES);
llRequestPermissions(siton, PERMISSION_TRIGGER_ANIMATION);
}
}
}
}

run_time_permissions(integer perm) {
key perm_key = llGetPermissionsKey();
if (perm_key == siton) {
if (perm & PERMISSION_TRIGGER_ANIMATION){
list anms = llGetAnimationList(siton);
integer i;
for (i = 0; i < llGetListLength(anms); i++){
llStopAnimation(llList2Key(anms, i));
}
llStartAnimation(animation_name);
}
}
}
}


編集する箇所は3箇所です。
①アニメーションの名前。これを先に自分で作ったポーズまたはアニメーションの名前にします。
②③座る位置と角度。このあたりは、座る椅子や場所によって、またはダンスアニメなどだと立ったままだったりで、わかりにくいので、設置する場所に合わせて、調整しながら変更していきます。

一旦およその値をセットできたら、スクリプトを「Save」。
Runningにチェックを入れ、「Reset」ボタンをクリックします。

最後の仕上げ:ポーズボールを仕込む

テクスチャを変える場合は、「Texture」タブを開いて、テクスチャを変えましょう。

コレで完成です。

編集ウインドウを閉じて、そのまま、動作チェックをするもよし。
TAKEして他の場所で試すもよし。


さて、上記のスクリプトを試すとわかると思うのですが、デフォルトで、ポーズボールを試そうとすると、メニューの名前は「sit here」となります。

最後の仕上げ:ポーズボールを仕込む

ダンスボールなど、座る動作以外で使用することもあると思います。
そのときに、このメッセージを変えるのが、

llSetSitText("Dance");

というスクリプトです。
この中の「Dance」という部分が、パイメニューに表示されるメニュー名となります。

この記述を、上記のスクリプトの上のほう、

default {
state_entry(){

ココに入れます。
llSitTarget(sit_pos, llEuler2Rot(sit_rot * DEG_TO_RAD));
}


すると、この部分の記述は、

default {
state_entry(){
llSetSitText("Dance");
llSitTarget(sit_pos, llEuler2Rot(sit_rot * DEG_TO_RAD));
}


↑こうなりますね。

これで再びスクリプトを保存してリセットします。

最後の仕上げ:ポーズボールを仕込む

パイメニューの記述も「Dance」に変わりましたね♪

以上でッス。
スクリプトの名前は、好きな名前にしてください。
INVENTRYにドラッグして保存しておけば繰り返し使えます。


同じカテゴリー(アニメ・ポーズ)の記事画像
アニメーション&ポーズを作る:その5アニメーション作成
アニメーション&ポーズを作る:その4アップロード
アニメーション&ポーズを作る:その3ポーズ作り
アニメーション&ポーズを作る:その2画面説明とポーズ作り
アニメーション&ポーズを作る:その1ソフトのインストール
同じカテゴリー(アニメ・ポーズ)の記事
 アニメーション&ポーズを作る:その5アニメーション作成 (2008-05-05 17:29)
 アニメーション&ポーズを作る:その4アップロード (2008-05-05 16:35)
 アニメーション&ポーズを作る:その3ポーズ作り (2008-05-05 15:12)
 アニメーション&ポーズを作る:その2画面説明とポーズ作り (2008-05-05 15:10)
 アニメーション&ポーズを作る:その1ソフトのインストール (2008-05-05 15:09)

Posted by SALTYCANDY at 22:13 │アニメ・ポーズ