BlackSheep-LSL@Wiki

llGetAnimation

最終更新:

mizcremorne

- view
メンバー限定 登録/ログイン

llGetAnimation

string llGetAnimation(key id)

アバターが現在実行中のアニメーション状態名を返す。
アニメーション状態名とは、歩く、座る、飛ぶなどのアバターの基本動作を指す。
セカンドライフではアニメーション状態に応じて基本アニメーションが自動的に実行される。
例えば状態が「Walking」であれば「walk」アニメーションが実行される。

この関数の戻り値は以下のいずれかである。

戻り値 説明 基本アニメーション
Crouching しゃがむ crouch
Hovering 浮遊 hover
Hovering Down 下降 hover_down
Hovering Up 上昇 hover_up
Jumping ジャンプ jump
PreJumping ジャンプ前の動作 prejump
Running 走る run
Sitting オブジェクトに座る sit
Sitting on Ground 地面に座る sit_ground
Standing 直立 stand/stand_1/stand_2/stand_3/stand_4
Striding 大股歩き。この戻り値が意味する動作が何なのか未確認 stride
Flying 飛行 fly
FlyingSlow ゆっくり飛行 flyslow
Falling Down 落下 falldown
Standing Up 立ち上がる(落下して倒れたあと) standup
Landing 着地 land
Soft Landing やんわり着地。普通の着地との違いは不明 soft_land
CrouchWalking しゃがみ歩き crouchwalk
Turning Left 左に回転 turnleft
Turning Right 右に回転 turnright
Walking 歩行 walk

この関数の最も有名な使い方はアニメーションオーバーライド(AO)である。
AOとは歩く、座るなどの基本動作アニメーションを独自のアニメーションに置き換えることを言う。

以下は簡単なAOのスクリプトである。
key actor=NULL_KEY;
list anime = [
  "Sitting", "OrgSit",
  "Standing", "OrgStand",
  "Walking", "OrgWalk"
];
string cur_anim = ""; 

default {
  run_time_permissions(integer perm){
    if (! (perm & PERMISSION_TRIGGER_ANIMATION)) {
      llRequestPermissions(actor, PERMISSION_TRIGGER_ANIMATION);
    }else{
      llSetTimerEvent(0.5);
    }
  }  
  
  attach(key id){
    if (id != NULL_KEY){
      actor = llGetOwner();
      llRequestPermissions(actor, PERMISSION_TRIGGER_ANIMATION);
    }else{
      actor = NULL_KEY;
      llSetTimerEvent(0.0);
    }
  }
  
  timer(){
    string now_anim = llGetAnimation(actor);
    integer i = llListFindList(anime, [now_anim]);
    if (i != -1){
      string ao = llList2String(anime, i + 1);
      if (ao == cur_anim) {
        return;
      }
      llStartAnimation(ao);
      if (cur_anim != ""){
        llStopAnimation(cur_anim);
      }
      cur_anim = ao;
    }else{
      if (cur_anim != ""){
        llStopAnimation(cur_anim);
        cur_anim = "";
      }
    }
  }
}

リストanimeに定義されている基本アニメーションが実行中の場合は、独自のアニメーションを再生する。

注:上記サンプルにおいてオリジナルのアニメーションが基本アニメーションの優先度よりも低い場合、AOは正しく動作しない。

名前:
コメント:
記事メニュー
目安箱バナー