スクリプターズカフェ/ログ/アバターの状態ごとのデフォルトアニメーション
出典: Second Life in Japan
[編集] 08/08/30
教えてセカンドライフに上がった質問から、アニメーションの停止に関する仕様の話になりました。
この質問にあるように身に着けるアイテムの場合、取り外した時点で多くの処理を行うことができず、「再生したアニメーションを停止する」という処理を、そもそも意図した通りに実行することができません。
しかし、アニメーションの停止を行わなくてもアイテムを取り外した後に上手くアニメーションが停止されているように見えます。
(実際、デバッグ情報のAnimation Infoを表示させると、一覧から消えます)
このように自動的にアニメーションが停止されるのは、身に着けるアイテムに限らず、椅子から立ち上がった時などでも同様です。
ただし、この自動停止処理は「その時点のアバターの状態に対してデフォルトとして設定されているアニメーションが再生されていること」という不思議な条件で発生するようです。
次のwikiページに、アバターの状態ごとのアニメーションの表があります。
- Second Life Wiki llGetAnimation
試しに立っている状態で身に着けたアイテムのスクリプト内で「stand」アニメーションを停止させ、別のアニメーションを再生させると、そのアイテムを取り外しても再生したアニメーションのポーズのままになってしまいます。
★取り外した後に少しでもアバターを動かすと、walkなどのアニメが再生されて元に戻るようです。
【スクリプトサンプル】
default {
attach(key attached) {
if ( llGetAttached() > 0 ) {
llRequestPermissions( llGetOwner(), PERMISSION_TRIGGER_ANIMATION );
}
}
run_time_permissions(integer permissions) {
if ( permissions & PERMISSION_TRIGGER_ANIMATION ) {
llStopAnimation( "sit" );
llStopAnimation( "stand" );
llStartAnimation("fly");
}
}
}
このように、アニメーションの自動停止はアバターのデフォルトアニメーションと関連して実行されるので、自動停止を必要とする装着アイテムを製作する場合は、少なくともデフォルトのアニメーションが再生された状態でアイテムが取り外されるようにした方がよいのかもしれません。
