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 )
このあたりのアバター関係のスクリプトを使うので合ってますか??
これもちょっと試したのですけどどうもうまくいきません。
力不足なのはわかっていますが、何とかしたいです。
よろしくお願いします。
なお、少々どたばたしてるので、教えてくださった方への返事が遅れるかもしれませんが、ご容赦くださいまし~。
そのどたばたの中スクリプトをテストしてて何日も進まなくて泣きそうです;;
ボタンは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について
モール用のプリムカウンターを探しています
連続するアニメーションの処理
オブジェクトの上にフローティングテキストを出す。
チャットログの盗聴について
椅子に座った後で位置調整できるスクリプト
モール用のプリムカウンターを探しています
連続するアニメーションの処理
オブジェクトの上にフローティングテキストを出す。
チャットログの盗聴について
椅子に座った後で位置調整できるスクリプト
http://www.lslwiki.net/lslwiki/wakka.php?wakka=llGetPermissions
でとっておかないとアニメーション関係の関数はエラーをはく、
気がしますがそれは見えないところで取得済みでしょうか?
llRequestPermissions です。
http://www.lslwiki.net/lslwiki/wakka.php?wakka=llRequestPermissions
http://www.lslwiki.net/lslwiki/wakka.php?wakka=ExampleAnimationScript
ここらへんをざらっと見て、RequestPermssionのタイミングを
確認してコッソリコピペしてみてください。
llRequestPermissions
やはりHUDでもパーミッションの許可がいるのですね。
勝手な思い込みで、いらない?と判断してしまってました。
ささぴさん、考え方や使うスクリプトを載せて解説してくださってありがとうございます!
Ownerに値を入れてませんでした…。
アバターの状態をチェックするスクリプトですが、飛行するとアニメーションを止める、を追加する場合、
AGENT_FLYING
も書けば良いのですよね?
スクリプトを1つにまとめたサンプルまで書いていただいてホントありがとうです!!
とりあえず自分が作ってるスクリプトがちゃんと動くようにチェックして理解したら、サンプルを参考に1つにまとめてみようと思います。
ついでにもうひとつお願いします。
HUDでアバターに装着させてるオブジェクトに命令を送りたい場合は
HUDからチャンネルで発言して
llListen
で装着してるオブジェクトが聞き取ればよいのですか?
ここまでテストしてないので、考え方があってるかを確認したいです。
アバターが○○したら…と、オブジェクト同士のチャンネル通信もできました。
大変勉強になりました。
ありがとうございます!!