2008年02月20日
ゼロから始めるスクリプト(その2)
さて、今日はいよいよポーズをとらせるためのスクリプトをポーズボールに入れていきます。
この前FG三姉妹の写真を撮るときにつかったポーズボールがありますのでその中身をみながら、どんなスクリプトを使っているのか解説したいと思います。
この前お話したようにスクリプトはポーズボールのオブジェクトのコンテンツというところに入っています。
ここにはスクリプト以外にアバターにつけさせるポーズのアニメーションも入っています。
あとよく見ると何かテクスチャーも入っていますね。これについては後で解説いたします。

実際にここに入っているスクリプトを以下に書き出してみます。
一番手っ取り早いのは下のスクリプトをそのままコピーペーストして使うのが簡単です。
このとき一番上の string SET_TEXT="Arin Pose" のArin Poseを自分の好きな文字に入れ替えれば、その文字をポーズボールの上に表示させることができます。
string SET_TEXT="Arin Pose";
vector POSITION=<0.0, 0.0, -0.1>;
list rgb;
string animation;
default
{
state_entry()
{
llSetText(SET_TEXT,<1,1,1>,1);
llSitTarget(POSITION, ZERO_ROTATION);
llSetAlpha(1.0, ALL_SIDES);
}
changed(integer change)
{
if (change & CHANGED_LINK)
{
if (llAvatarOnSitTarget() != NULL_KEY)
{
llRequestPermissions(llAvatarOnSitTarget(), PERMISSION_TRIGGER_ANIMATION);
}
else
{
integer perm=llGetPermissions();
if ((perm & PERMISSION_TRIGGER_ANIMATION) && llStringLength(animation)>0)
llStopAnimation(animation);
animation="";llSetText(SET_TEXT,<1,1,1>,1);
llSetAlpha(1.0, ALL_SIDES);
}
}
}
run_time_permissions(integer perm)
{
if (perm & PERMISSION_TRIGGER_ANIMATION)
{
llStopAnimation("sit");
animation=llGetInventoryName(INVENTORY_ANIMATION,0);
llStartAnimation(animation);
llSetText("",<0,0,0>,0);
llSetAlpha(0.0, ALL_SIDES);
}
}
}
こうしてコピーペーストして作ったスクリプトはしっかりと保存しておきましょう。
実際にポーズのアニメーションとスクリプトをボールの中に入れて(あとテクスチャーをボールに貼った場合はボールに貼ったのと同じテクスチャーをスクリプトやアニメーションと一緒にコンテンツの中に入れます。)、これで終了です。
さて、ポーズボールに座ってみましょう。 あれれ?足が床につきささってしまっています。

ポーズボールの位置が悪いようです。ボールを右クリックして編集の状態にしてからボールに座ると、矢印が出たままになりますので、ボールの位置を動かして調整することが可能です。

はい、できました^^

今回は、とりあえず深く考えずに既にあるスクリプトをボールに入れてみました。
次回以降はスクリプトをすこしずつ見ながら解説をしていきたいと思います。
文字が多くなりそうですけど、なるべく分かり易くすこしずつやっていきます。お付き合いください。
この前FG三姉妹の写真を撮るときにつかったポーズボールがありますのでその中身をみながら、どんなスクリプトを使っているのか解説したいと思います。
この前お話したようにスクリプトはポーズボールのオブジェクトのコンテンツというところに入っています。
ここにはスクリプト以外にアバターにつけさせるポーズのアニメーションも入っています。
あとよく見ると何かテクスチャーも入っていますね。これについては後で解説いたします。

実際にここに入っているスクリプトを以下に書き出してみます。
一番手っ取り早いのは下のスクリプトをそのままコピーペーストして使うのが簡単です。
このとき一番上の string SET_TEXT="Arin Pose" のArin Poseを自分の好きな文字に入れ替えれば、その文字をポーズボールの上に表示させることができます。
string SET_TEXT="Arin Pose";
vector POSITION=<0.0, 0.0, -0.1>;
list rgb;
string animation;
default
{
state_entry()
{
llSetText(SET_TEXT,<1,1,1>,1);
llSitTarget(POSITION, ZERO_ROTATION);
llSetAlpha(1.0, ALL_SIDES);
}
changed(integer change)
{
if (change & CHANGED_LINK)
{
if (llAvatarOnSitTarget() != NULL_KEY)
{
llRequestPermissions(llAvatarOnSitTarget(), PERMISSION_TRIGGER_ANIMATION);
}
else
{
integer perm=llGetPermissions();
if ((perm & PERMISSION_TRIGGER_ANIMATION) && llStringLength(animation)>0)
llStopAnimation(animation);
animation="";llSetText(SET_TEXT,<1,1,1>,1);
llSetAlpha(1.0, ALL_SIDES);
}
}
}
run_time_permissions(integer perm)
{
if (perm & PERMISSION_TRIGGER_ANIMATION)
{
llStopAnimation("sit");
animation=llGetInventoryName(INVENTORY_ANIMATION,0);
llStartAnimation(animation);
llSetText("",<0,0,0>,0);
llSetAlpha(0.0, ALL_SIDES);
}
}
}
こうしてコピーペーストして作ったスクリプトはしっかりと保存しておきましょう。
実際にポーズのアニメーションとスクリプトをボールの中に入れて(あとテクスチャーをボールに貼った場合はボールに貼ったのと同じテクスチャーをスクリプトやアニメーションと一緒にコンテンツの中に入れます。)、これで終了です。
さて、ポーズボールに座ってみましょう。 あれれ?足が床につきささってしまっています。

ポーズボールの位置が悪いようです。ボールを右クリックして編集の状態にしてからボールに座ると、矢印が出たままになりますので、ボールの位置を動かして調整することが可能です。

はい、できました^^

今回は、とりあえず深く考えずに既にあるスクリプトをボールに入れてみました。
次回以降はスクリプトをすこしずつ見ながら解説をしていきたいと思います。
文字が多くなりそうですけど、なるべく分かり易くすこしずつやっていきます。お付き合いください。
ゼロから始めるスクリプト(その7)
ゼロから始めるスクリプト(その6)
ゼロから始めるスクリプト(その5)
ゼロから始めるスクリプト(その4)
ゼロから始めるスクリプト(その3)
ゼロから始めるスクリプト(その1)
ゼロから始めるスクリプト(その6)
ゼロから始めるスクリプト(その5)
ゼロから始めるスクリプト(その4)
ゼロから始めるスクリプト(その3)
ゼロから始めるスクリプト(その1)
Posted by Jamaica at 19:31│Comments(2)
│スクリプト
この記事へのコメント
初めまして。SLではnanaiと申します。
私もスクリプト記述を探しまくったのはいいんですが、あまりに難しくって挫折しました…。説明の説明が必要だな〜と。
こちらでこんなわかりやすく説明していただけるとは!大変ありがたく思います。これからもちょくちょく覗きに来たいと思います。
私もスクリプト記述を探しまくったのはいいんですが、あまりに難しくって挫折しました…。説明の説明が必要だな〜と。
こちらでこんなわかりやすく説明していただけるとは!大変ありがたく思います。これからもちょくちょく覗きに来たいと思います。
Posted by かも
at 2008年02月21日 23:45

nanai さん、初めまして。
いつも初心者の視点をわすれずに書きたいと心がけていますが、わかりにくところがあったら遠慮なく言ってください。
ものづくりの楽しさをみなさんと分かち合えていけたらいいなと思っています。
今後ともよろしくお願いします。
いつも初心者の視点をわすれずに書きたいと心がけていますが、わかりにくところがあったら遠慮なく言ってください。
ものづくりの楽しさをみなさんと分かち合えていけたらいいなと思っています。
今後ともよろしくお願いします。
Posted by Jamaica at 2008年02月22日 20:37