Site search

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

2008年6月12日木曜日

ポーズボールのスクリプト

今回は簡単なポーズボールのスクリプトです。ボールは座ったときに透明になってフローティングテキストが消えるようにします。それ以外はポーズの入った椅子とほぼ同じですね^^

アバターが座ったときに、プリムにアニメーション制御の許可を与えるためにllRequestPermissionsを使わないといけないので、その分はちょっと複雑になります。


アニメーションはビューアーに組み込まれているものから選んで使用しましたが、これってあまり他人に見られたくないポーズですねw
コンテンツにアニメーションを入れて使うときはそのアニメーション名にします。
組み込まれてるアニメーション一覧
http://wiki.secondlife.com/wiki/Internal_Animations/ja
座る位置は<0,0,0>,ZERO_ROTATIONにしてしまうと動きません。少しでも位置をずらしてください。
// ポーズボール
string anim="falldown";  // アニメーション名
string text="sit";  // フローティングテキスト

default
{
    state_entry()
    {
        llSetText(text,<1,1,1>,1.0);  // フローティングテキスト表示
        llSetSitText(text);  // パイメニューのsit
        llSitTarget(<0,0,0.01>,ZERO_ROTATION);  // 座る位置
    }

    changed(integer change)
    {
        if (change & CHANGED_LINK)
        {
            key agent=llAvatarOnSitTarget();
            if (agent)
            {
                llRequestPermissions(agent,PERMISSION_TRIGGER_ANIMATION);
            }
            else
            {
                // 立ち上がったときの処理
                llSetText(text,<1,1,1>,1.0);  // フローティングテキスト表示
                llSetAlpha(1.0,ALL_SIDES);  // プリムを不透明に
                llStopAnimation(anim); // アニメーション停止
            }
        }
    }

    run_time_permissions(integer perm)  
    {
        if (perm & PERMISSION_TRIGGER_ANIMATION)
        {
            // 座ったときの処理
            llStopAnimation("sit"); // デフォルトのアニメーションsitを停止
            llStartAnimation(anim); // ポーズさせるアニメーションを実行
            llSetText("",<1,1,1>,1.0); // フローティングテキスト消去
            llSetAlpha(0.0,ALL_SIDES); // プリムを透明に
        }
    }
}
アバターが立ち上がったときにllStopAnimation使いますが、無くても大丈夫みたいです。ホントに必要なのかよくわからないです^^;;

0 件のコメント:

コメントを投稿