Difference between revisions of "LlGetAnimation/ja"

From Second Life Wiki
Jump to navigation Jump to search
 
Line 95: Line 95:
{{!}}}
{{!}}}
|examples=
|examples=
<lsl>
<source lang="lsl2">
// 単純なアニメーションオーバーライドのサンプルです。
// 単純なアニメーションオーバーライドのサンプルです。
// ジャンプしたときに、アバターを空中で走らせます。
// ジャンプしたときに、アバターを空中で走らせます。
Line 161: Line 161:
     }
     }
}
}
</lsl>
</source>
|helpers
|helpers
|also_functions={{LSL DefineRow||{{LSLG/ja|llGetAgentInfo}}|}}
|also_functions={{LSL DefineRow||{{LSLG/ja|llGetAgentInfo}}|}}

Latest revision as of 04:38, 25 February 2016

要約

関数: llGetAnimation( key id );

現在再生している id のアバターの移動アニメーションを string で返します。下のテーブルを参照してください。

• key id 同一 地域 にいるアバターの UUID

llGetAgentInfo はこの関数で対応できないいくつかのアニメーションの状態 (typing, away, busy) について情報提供します。llGetAnimationList は走行アニメーションのもっと詳細な情報を提供しますが、llGetAnimation ほど正確にはアバターの状態を反映していない可能性があります。

説明
"" ログアウトの間
"Crouching"
"CrouchWalking"
"Falling Down"
"Flying"
"FlyingSlow"
"Hovering"
"Hovering Down"
"Hovering Up"
"Jumping" ジャンプの間、まだ空中にいるとき
"Landing" ジャンプしてから着地したとき
"PreJumping" ジャンプを開始したとき
説明
"Init" ログイン時とテレポート直後
"Running"
"Sitting" オブジェクトに座っているとき
"Sitting on Ground" 地面に座っている時
"Standing"
"Standing Up" 高いところから落ちた直後。しばしば Hard Landing と称される
"Striding" アバターがオブジェクトの端、もしくは他のアバターの上で手詰まりになっているとき
"Soft Landing" 短い距離で落下した直後
"Taking Off"
"Turning Left"
"Turning Right"
"Walking"

警告

  • この関数はアバターがログアウトする間空文字列を返す可能性があります。
  • 新しい復帰値がもしかするといつか追加されるかもしれず、このリストは事実上完全なものではないかもしれません。認識できない値を受け取る可能性もあることを前提にスクリプトを書くべきです。

サンプル

// 単純なアニメーションオーバーライドのサンプルです。
// ジャンプしたときに、アバターを空中で走らせます。

key gOwner; // 装着している人のキー
string gLastAnimation; // 最後に確認した llGetAnimation の値

// ユーザ関数

Initialize(key id) {
    if (id == NULL_KEY) { // 取り外し中
        llSetTimerEvent(0.0); // タイマーを止める
    }
    else { // 装着されたか、装着したままリセットされた
        llRequestPermissions(id, PERMISSION_TRIGGER_ANIMATION);
        gOwner = id;
    }
}


// イベントハンドラ

default
{
    state_entry() {
        // 既に装着されている時にリセットされた場合に備えて
        if (llGetAttached() != 0) {
            Initialize(llGetOwner());
        }
    }

    attach(key id) {
        Initialize(id);
    }

    run_time_permissions(integer perm) {
        if (perm & PERMISSION_TRIGGER_ANIMATION) {
            llSetTimerEvent(0.25); // ポーリング開始
        }
    }

    timer() {
        string newAnimation = llGetAnimation(gOwner);

        if (gLastAnimation != newAnimation) { // 何か変更ある?
            if (newAnimation == "Jumping") {
                
                // あなたの持っているアニメーションの邪魔をするようなら、
                // 自由に組み込みアニメーションを止めてもかまいません。
                // 組み込みアニメーションを無差別に止める場合、
                // アバターは手詰まりになる可能性があることと、
                // llGetAgentInfo の結果が正しくない可能性があることに注意しましょう。
                // 常にテストしましょう。
                // llStopAnimation("jump");
    
                llStartAnimation("run");
            }
            else if (gLastAnimation == "Jumping")  { // 今しがたジャンプを終了した
                // "run" はループアニメーションのため、終わったら止めなければなりません。
                llStopAnimation("run");
            }
            
            gLastAnimation = newAnimation; // 次回のためにとっておく
        }
    }
}

関連項目

関数

•  llGetAgentInfo
•  llGetAnimationList

特記事項

Search JIRA for related Issues

Signature

function void llGetAnimation( key id );
この翻訳は 原文 と比べて古いですか?間違いがありますか?読みにくいですか?みんなで 修正 していきましょう! (手順はこちら)
この項目はあなたにとって参考にならない項目ですか?もしかしたらLSL Wikiの関連した項目が参考になるかもしれません。