Site search

Google
WWW を検索 backup-beta.blogspot.com を検索

2008年9月4日木曜日

アニメーションを全部止めるスクリプト

今回はアバターが再生中のアニメーションを全部止めるスクリプトです。

タッチしたアバターのアニメを止めるようにします。普通によくある簡単なスクリプトですね。ちょっといいネタが思いつかなかったのでwww
llGetAnimationListで再生中のアニメのリストを取得して1つずつ止めます。


タッチするとアニメーションを操作するためのパーミッション許可を要求するダイアログが出ますので、これを許可すると止まります^^
// アニメーションを全部止める
list anim_list;

default
{
    touch_start(integer total_number)
    {
        key agent=llDetectedKey(0);  // タッチしたアバターのキー
        anim_list=llGetAnimationList(agent);  // 再生中のアニメーションのリスト
        llRequestPermissions(agent,PERMISSION_TRIGGER_ANIMATION);  // アニメのパーミッションリクエスト
    }

    run_time_permissions(integer perm)
    {
        if (perm & PERMISSION_TRIGGER_ANIMATION)
        {
            integer i;
            for (i=0; i < llGetListLength(anim_list); i++)
            {  // リストのアニメの数だけループして
                llStopAnimation(llList2Key(anim_list,i));  // アニメを1個ずつ停止
            }
            llStartAnimation("stand");  // 立った状態のポーズをとらせる
        }
    }
}

2009年1月30日追記: 製作中のHUDに組み込んでて気がついたんですが、AOを使ってないとアニメーションが止まった後、アバターを動かすまで最後に再生されたアニメーションのポーズをとったままの状態になるみたいです。なので for ループでアニメーションを停止した後、普通のスタンドポーズ(stand)を再生するよう修正しました。

0 件のコメント:

コメントを投稿