Site search

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

2008年12月22日月曜日

装着でアニメするスクリプト

最近は記事にするスクリプトのネタも思いつかない千尋です^^; 初心者向けって感じなのでテキトーな長さで簡単なものがいいんですけどね。あまり長くなりすぎたら理解しようって気も起きずにコピペするだけになっちゃうんじゃないかなって思うんですよwww

えっと、今回は装着したらアニメーションを再生するスクリプトです。まあ普通によくあるようなスクリプトですけどね^^;

attachon_rezのイベントで装着されているかをチェックしてアニメーション再生を要求するようにしたらいいですね。あと、テレポートしたとき再生中のアニメーションが停止してしまうので、このときも再度アニメーションを要求するようにします。


今回アニメは turn_180 を使用してみました。ポーズスタンドによく使われる内蔵アニメーションですね^^ HUDとかにして装着したらどこでも使えていいかも?www
内蔵のもの以外を使うときはコンテンツ内にアニメーションを入れてくださいね。
// 装着でアニメーション再生
string anim="turn_180";  // 再生するアニメーション名

req()
{  // アニメーション再生要求
    llRequestPermissions(llGetOwner(),PERMISSION_TRIGGER_ANIMATION);
}

default
{
    state_entry()
    {
        if (llGetAttached()) req();  // 装着されてたらreqへ
    }

    attach(key id)
    {  // アタッチイベント
        llSleep(0.1);  // スクリプト停止0.1秒
        if (id) req();  // 装着されたらreqへ
    }

    changed(integer change)
    {
        if (change & CHANGED_TELEPORT)
        {  // テレポートしたら
            req();  // reqへ
        }
    }

    run_time_permissions(integer perm)  
    {
        if (perm & PERMISSION_TRIGGER_ANIMATION)
        {  // アニメーションが許可されたら
            llStartAnimation(anim);  // アニメーションを再生
        }
    }
}

装着したオブジェクトを外すとrezされてない状態になってアニメーションは止まるのでllStopAnimationは特に使ってません。
あと、装着したままアニメーションを替えてもすぐテストできるようにstate_entryでもパーミッション許可を要求するようにしましたw

2010年6月29日追記: アタッチイベントにllSleepを追加しました。装着でアニメするアイテムを同じ部分に装着して入れ替わったときにアニメが止まるのを抑止できます。

0 件のコメント:

コメントを投稿