2009年05月13日

椅子から立った時のアニメ停止処理

こんにちは。

椅子から立った時に複数のアニメーション停止処理(llStopAnimation)を実行しています。
普通に立った場合は問題無いのですが、座ったままテレポートしてしまうと

llStopAnimation: Script trying to stop animations but agent not found
(アニメを停止しようとしたけど、アバターが見つけられない)

というエラーがでてしまいます。

停止するアニメーションが1つだけなら、エラーが出ない場合もありますが、
複数のアニメーションを停止しようとすると、必ず出ます。


立った時はアニメ停止処理(llStopAnimation)しない方がいいのでしょうか。


わざわざllStopAnimationで停止しなくても、立つと自動的にアニメが停止されますが、
これは仕様ということでしょうか。
この仕様?に従って、自分でllStopAnimationしない方がいいのでしょうか。

※なんか人任せな感じですっきりしないので、自分でllStopAnimationを実行して停止しています。

以上、よろしくお願いします。


同じカテゴリー(スクリプト関連)の記事画像
オブジェクトのリンクとタッチで開く扉
自動チャットを止めたい
テレポートするとアニメーションが解除される
同じカテゴリー(スクリプト関連)の記事
 テクスチェンジのHUDについて (2015-07-01 04:51)
 モール用のプリムカウンターを探しています (2014-11-29 20:09)
 連続するアニメーションの処理 (2014-08-24 03:23)
 オブジェクトの上にフローティングテキストを出す。 (2014-08-22 16:46)
 チャットログの盗聴について (2014-02-03 03:43)
 椅子に座った後で位置調整できるスクリプト (2013-03-24 16:37)

Posted by msn  at 16:43 │Comments(6)スクリプト関連

この記事へのコメント
昔、sit関係でBBSでみんなで実験したりした経緯です。
参考までに。
http://bb2.atbb.jp/lslbbs/viewtopic.php?t=48
※結構長いです
Posted by you Xiao at 2009年05月13日 21:35
youさん、ありがとうございます。

お教え頂いたBBSのように、アバ存在チェックしてから、アニメを停止するようにしてみました。

お陰様で、エラーはでなくなりました!
ありがとうございます。

ですが、やはり複数のアニメは停止することができませんでした><
全部を止める前に、アバ存在チェックにひっかかってしまいます。


あと、稀に、アバ存在チェックを抜けた後の、絶妙なタイミングでアバが居なくなり、エラーになってしまう場合もあります・・。

複数アニメを止めるのは不可能なのでしょうか・・。

また何かご存じでしたら、ご教授お願いします。
Posted by msn at 2009年05月14日 08:36
こんにちは。私はダンスボールつくりばっかりしています。
その経験からご参考になれば。

スクリプトから考えると「スクリプトエラー」を回避するのがまずは重要だと思います。なので、llStart/StopAnimation 時に AV がいないときにでるエラー回避を考えます。

次にポーズなどの比較的優先順位の高い「ループアニメーション」は止めてあげないといけないので、llStopAnimation を考えるわけです。ただ、llStart/StopAnimation はその AV が同 SIM にいないかぎり意味のない処理になってしまいます。

you さんが紹介されているように、TPしようとして別の SIM にいく「一瞬」の間に llStopAnimation をかけてあげられる「可能性」はあるのですが、SIM の状況、for でまわすにもアニメ―ションが多い場合は間に合わない、というのが今の現象です。

TP ではなく通常の「たちあがり時」でも確実に「スクリプトエラーをださずに」複数のアニメーションをとめるために AV 存在チェックをする、というのが基本で、TP などでいなくなった場合、スクリプトの観点から言えば AV が同 SIM 内にいないので llStart/StopAnimation はすでに無意味、、、ということになります。

座ったまま TP した AV は TP 先でも「すべてのアニメーションをとめる」(だったかな)でアニメ―ションはとまりますし、timer をつかって llStartAnimation を使うようなこと(つまり、ダンスポールのようにパーミッションをもちつづける)をしていなければ、AV チェックでいなかったら llStopAnimation をしない、で、スクリプトとしてできる最大限のことをやっていると思います。

・スクリプトエラーを回避するために AV チェック
・TPされたら複数のアニメーションを瞬時にすべてとめられないので、立ってから移動してね、、、とお願い。

ということになると思います。
Posted by Whitfield-In-WorldWhitfield-In-World at 2009年05月15日 16:52
Whitfield-In-Worldさん、ありがとうございます。

やはり複数アニメを止めるのは不可能なのですね。
立ち上がったら自動で止まるのに、TPしたら止まらないって、SLの設計ミスという気がしてしまいます。

存在チェックして、居ることを確認して、IF文の中に入った場合でも、その直後にアバターが居なくなり、エラーになる場合もありました。
そう考えると「チェックしてから止める」という処理もやめた方がいいのかな・・と思いました。

結局、立ちあがった時は何も処理しないのが一番良いのでしょうか・・・。


TPした後に、メニューの「すべてのアニメーションをとめる」を行った場合、
自分のビューワーではアニメが止まりますが、他の人から見るとアニメが再生され続けています。
この機能もSLの設計ミスなんじゃ?と思います。
この機能、紛らわしいですよね。
Posted by msn at 2009年05月16日 17:12
changed イベントとアニメーション停止の関係はちょっと奥が深そうですね。
changed イベントの CHANGED_LINK はアニメーションを明示的に止めなくても、、、とめてくれるのですね。。。逆に勉強になりました。

エラー回避という意味では、前述は訂正しなくてはいけませんね。
なにもしない。。。これが良いのかもしれません。

お役に立てそうになく、すみません。
Posted by Whitfield-In-WorldWhitfield-In-World at 2009年05月17日 19:05
Whitfield-In-Worldさん、ありがとうございます。

いろいろアドバイス頂き、ありがとうございます。

「何もしない」のが良さそうですよね。

かなり納得いきませんが・・・。
SLの仕様だから仕方無いですよね。

今後もよろしくお願い致します。

本当にありがとうございました。
Posted by msn at 2009年05月18日 17:57
<ご注意>
書き込まれた内容は公開され、ブログの持ち主だけが削除できます。