LlGetAnimation/ja
Jump to navigation
Jump to search
LSL ポータル | 関数 | イベント | 型 | 演算子 | 定数 | 実行制御 | スクリプトライブラリ | カテゴリ別スクリプトライブラリ | チュートリアル |
要約
関数: llGetAnimation( key id );現在再生している id のアバターの移動アニメーションを string で返します。下のテーブルを参照してください。
• key | id | – | 同一 地域 にいるアバターの UUID |
llGetAgentInfo はこの関数で対応できないいくつかのアニメーションの状態 (typing, away, busy) について情報提供します。llGetAnimationList は走行アニメーションのもっと詳細な情報を提供しますが、llGetAnimation ほど正確にはアバターの状態を反映していない可能性があります。
|
|
警告
- この関数はアバターがログアウトする間空文字列を返す可能性があります。
- 新しい復帰値がもしかするといつか追加されるかもしれず、このリストは事実上完全なものではないかもしれません。認識できない値を受け取る可能性もあることを前提にスクリプトを書くべきです。
サンプル
// 単純なアニメーションオーバーライドのサンプルです。
// ジャンプしたときに、アバターを空中で走らせます。
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 |
特記事項
この項目はあなたにとって参考にならない項目ですか?もしかしたらLSL Wikiの関連した項目が参考になるかもしれません。