Difference between revisions of "LlGetAnimation/ja"

From Second Life Wiki
Jump to navigation Jump to search
m
 
(3 intermediate revisions by one other user not shown)
Line 1: Line 1:
{{LSL Function/avatar/ja|id|sim=*}}{{LSL_Function/ja
{{LSL Function/avatar/ja|id|sim=*}}{{LSL_Function/ja
|func_id=162|func_sleep=0.0|func_energy=10.0
|func_id=162|func_sleep=0.0|func_energy=10.0
|func=llGetAnimation|return_type=string|p1_type=key|p1_name=id
|func=llGetAnimation|p1_type=key|p1_name=id
|func_footnote=[[llGetAgentInfo/ja|llGetAgentInfo]]と[[llGetAnimationList/ja|llGetAnimationList]]はこの関数の結果よりもアバタについてさらに詳しい情報を提供するため、代わりにこれらを使うことが推奨されます。
|func_footnote={{LSLG/ja|llGetAgentInfo}} はこの関数で対応できないいくつかのアニメーションの状態 (typing, away, busy) について情報提供します。{{LSLG/ja|llGetAnimationList}} は走行アニメーションのもっと詳細な情報を提供しますが、llGetAnimation ほど正確にはアバターの状態を反映していない可能性があります。
|func_desc
|func_desc=現在再生している '''id''' のアバターの移動アニメーションを string で返します。下のテーブルを参照してください。
|return_text=以下のテーブルを参照しましょう。<br />アバター'''id'''で現在実行している移動アニメーション名
|spec
|spec
|caveats
|caveats=*この関数はアバターがログアウトする間空文字列を返す可能性があります。
*新しい復帰値がもしかするといつか追加されるかもしれず、このリストは事実上完全なものではないかもしれません。認識できない値を受け取る可能性もあることを前提にスクリプトを書くべきです。
|constants={{{!}}
|constants={{{!}}
{{!}}-valign="top"
{{!}}-valign="top"
{{!}}
{{!}}
{{{!}}{{Prettytable}}
{{{!}}{{Prettytable|style=margin-top:0;}}
{{!}}-{{Hl2}}
{{!}}-{{Hl2}}
!値
!値
!説明
!説明
{{!}}-
{{!}}""
{{!}}ログアウトの間
{{!}}-
{{!}}-
{{!}}"Crouching"
{{!}}"Crouching"
{{!}}
{{!}}-
{{!}}"CrouchWalking"
{{!}}
{{!}}-
{{!}}"Falling Down"
{{!}}
{{!}}-
{{!}}"Flying"
{{!}}
{{!}}-
{{!}}"FlyingSlow"
{{!}}
{{!}}
{{!}}-
{{!}}-
Line 28: Line 43:
{{!}}-
{{!}}-
{{!}}"Jumping"
{{!}}"Jumping"
{{!}}
{{!}}ジャンプの間、まだ空中にいるとき
{{!}}-
{{!}}"Landing"
{{!}}ジャンプしてから着地したとき
{{!}}-
{{!}}-
{{!}}"PreJumping"
{{!}}"PreJumping"
{{!}}
{{!}}ジャンプを開始したとき
{{!}}-
{{!}}"Running"
{{!}}
{{!}}}
{{!}}}
{{!}}
{{!}}
{{{!}}{{Prettytable}}
{{{!}}{{Prettytable|style=margin-top:0;}}
{{!}}-{{Hl2}}
{{!}}-{{Hl2}}
!値
!値
!説明
!説明
{{!}}-
{{!}}"Init"
{{!}}ログイン時とテレポート直後
{{!}}-
{{!}}"Running"
{{!}}
{{!}}-
{{!}}-
{{!}}"Sitting"
{{!}}"Sitting"
{{!}}オブジェクトに座っています。
{{!}}オブジェクトに座っているとき
{{!}}-
{{!}}-
{{!}}"Sitting on Ground"
{{!}}"Sitting on Ground"
{{!}}
{{!}}地面に座っている時
{{!}}-
{{!}}-
{{!}}"Standing"
{{!}}"Standing"
{{!}}
{{!}}
{{!}}-
{{!}}"Striding"
{{!}}
{{!}}-
{{!}}"Flying"
{{!}}
{{!}}-
{{!}}"FlyingSlow"
{{!}}
{{!}}-
{{!}}"Falling Down"
{{!}}
{{!}}}
{{!}}
{{{!}}{{Prettytable}}
{{!}}-{{Hl2}}
!値
!説明
{{!}}-
{{!}}-
{{!}}"Standing Up"
{{!}}"Standing Up"
{{!}}とてつもない距離から落ちた後の動作です。
{{!}}高いところから落ちた直後。しばしば Hard Landing と称される
{{!}}-
{{!}}-
{{!}}"Landing"
{{!}}"Striding"
{{!}}
{{!}}アバターがオブジェクトの端、もしくは他のアバターの上で手詰まりになっているとき
{{!}}-
{{!}}-
{{!}}"Soft Landing"
{{!}}"Soft Landing"
{{!}}
{{!}}短い距離で落下した直後
{{!}}-
{{!}}-
{{!}}"CrouchWalking"
{{!}}"Taking Off"
{{!}}
{{!}}
{{!}}-
{{!}}-
Line 91: Line 94:
{{!}}}
{{!}}}
{{!}}}
{{!}}}
|examples
|examples=
<source lang="lsl2">
// 単純なアニメーションオーバーライドのサンプルです。
// ジャンプしたときに、アバターを空中で走らせます。
 
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; // 次回のためにとっておく
        }
    }
}
</source>
|helpers
|helpers
|also_functions={{LSL DefineRow||[[llGetAgentInfo/ja|llGetAgentInfo]]|}}
|also_functions={{LSL DefineRow||{{LSLG/ja|llGetAgentInfo}}|}}
{{LSL DefineRow||[[llGetAnimationList/ja|llGetAnimationList]]|}}
{{LSL DefineRow||{{LSLG/ja|llGetAnimationList}}|}}
|also_events
|also_events
|also_tests
|also_tests

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の関連した項目が参考になるかもしれません。