2009年08月24日

アニメーションのHUD

アニメーションが再生されるHUDを作っています。
ボタンは3つぐらいでリンクしています。
子プリムを押すと「dance」が再生される。もう一度押すと止まる…というのを作りたいのですがうまくいきません。
スクリプトはルートプリムに入れています。

スクリプト1

default
{
touch_start( integer _num )
{
if (llDetectedLinkNumber(0) == 2)
{
llMessageLinked(LINK_SET, 0, "danceA", NULL_KEY);
}
}
}

本当はまだごちゃごちゃしてるスクリプトなのですが、簡易にして、llMessageLinked~で命令をするってところを伝えたくて…。


スクリプト2

key Owner;
string animation_name="dance";

default
{
link_message( integer _sender, integer _num, string _message, key _id)
{
if ( _message == "danceA" )
{
key chk = llGetInventoryKey(animation_name);
list anms = llGetAnimationList(Owner);
integer i;
for (i = 0; i < llGetListLength(anms); i++)
{
if (chk == llList2Key(anms, i))
{
llStopAnimation(animation_name);
Owner = NULL_KEY;
return;
}
}
llStartAnimation(animation_name);
}
Owner = NULL_KEY;
}
}

まずにして、アニメーションが再生されません…。もちろんアニメーションをコンテンツにちゃんと入れています。
llMessageLinkedを使うのが間違ってるのでしょうか?

タッチしたら動いて、もう一度タッチすると止まる…というのにしたくて、
if (chk == llList2Key(anms, i))
を使ってアニメーションをしていたら止める、アニメーションをしていなかったらさせる、にしているのですけど、合ってますよね…?
それとも1つのスクリプトでうまく収まるのでしょうか?

そして、アバターが動く(歩く、走る等)とアニメーションが止まる、にしたいのですけど、その方法がわかりません><

if (llGetAgentInfo(llGetOwner()) & AGENT_WALKING )

このあたりのアバター関係のスクリプトを使うので合ってますか??
これもちょっと試したのですけどどうもうまくいきません。

力不足なのはわかっていますが、何とかしたいです。
よろしくお願いします。

なお、少々どたばたしてるので、教えてくださった方への返事が遅れるかもしれませんが、ご容赦くださいまし~。
そのどたばたの中スクリプトをテストしてて何日も進まなくて泣きそうです;;


同じカテゴリー(スクリプト関連)の記事画像
オブジェクトのリンクとタッチで開く扉
自動チャットを止めたい
テレポートするとアニメーションが解除される
同じカテゴリー(スクリプト関連)の記事
 テクスチェンジの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 pikopino  at 00:07 │Comments(6)スクリプト関連

この記事へのコメント
アニメのパーミッションを

http://www.lslwiki.net/lslwiki/wakka.php?wakka=llGetPermissions

でとっておかないとアニメーション関係の関数はエラーをはく、
気がしますがそれは見えないところで取得済みでしょうか?
Posted by none at 2009年08月24日 02:13
ひどいウソこきましたごめんなさい

llRequestPermissions です。
http://www.lslwiki.net/lslwiki/wakka.php?wakka=llRequestPermissions

http://www.lslwiki.net/lslwiki/wakka.php?wakka=ExampleAnimationScript

ここらへんをざらっと見て、RequestPermssionのタイミングを
確認してコッソリコピペしてみてください。
Posted by none at 2009年08月24日 02:16
自ブログに書いたのでご参照ください。
Posted by ささぴ at 2009年08月24日 19:09
コメントありがとうございます!!

llRequestPermissions
やはりHUDでもパーミッションの許可がいるのですね。
勝手な思い込みで、いらない?と判断してしまってました。

ささぴさん、考え方や使うスクリプトを載せて解説してくださってありがとうございます!
Ownerに値を入れてませんでした…。

アバターの状態をチェックするスクリプトですが、飛行するとアニメーションを止める、を追加する場合、
AGENT_FLYING
も書けば良いのですよね?

スクリプトを1つにまとめたサンプルまで書いていただいてホントありがとうです!!
とりあえず自分が作ってるスクリプトがちゃんと動くようにチェックして理解したら、サンプルを参考に1つにまとめてみようと思います。


ついでにもうひとつお願いします。
HUDでアバターに装着させてるオブジェクトに命令を送りたい場合は
HUDからチャンネルで発言して
llListen
で装着してるオブジェクトが聞き取ればよいのですか?
ここまでテストしてないので、考え方があってるかを確認したいです。
Posted by pikopinopikopino at 2009年08月25日 11:05
コメントを追加しましたのでご参照ください。
Posted by ささぴ at 2009年08月25日 13:44
ささぴさん、また丁寧に教えていただいてありがとうございます><
アバターが○○したら…と、オブジェクト同士のチャンネル通信もできました。
大変勉強になりました。
ありがとうございます!!
Posted by pikopinopikopino at 2009年08月27日 14:25
<ご注意>
書き込まれた内容は公開され、ブログの持ち主だけが削除できます。