2009年05月13日
椅子から立った時のアニメ停止処理
こんにちは。
椅子から立った時に複数のアニメーション停止処理(llStopAnimation)を実行しています。
普通に立った場合は問題無いのですが、座ったままテレポートしてしまうと
llStopAnimation: Script trying to stop animations but agent not found
(アニメを停止しようとしたけど、アバターが見つけられない)
というエラーがでてしまいます。
停止するアニメーションが1つだけなら、エラーが出ない場合もありますが、
複数のアニメーションを停止しようとすると、必ず出ます。
立った時はアニメ停止処理(llStopAnimation)しない方がいいのでしょうか。
わざわざllStopAnimationで停止しなくても、立つと自動的にアニメが停止されますが、
これは仕様ということでしょうか。
この仕様?に従って、自分でllStopAnimationしない方がいいのでしょうか。
※なんか人任せな感じですっきりしないので、自分でllStopAnimationを実行して停止しています。
以上、よろしくお願いします。
椅子から立った時に複数のアニメーション停止処理(llStopAnimation)を実行しています。
普通に立った場合は問題無いのですが、座ったままテレポートしてしまうと
llStopAnimation: Script trying to stop animations but agent not found
(アニメを停止しようとしたけど、アバターが見つけられない)
というエラーがでてしまいます。
停止するアニメーションが1つだけなら、エラーが出ない場合もありますが、
複数のアニメーションを停止しようとすると、必ず出ます。
立った時はアニメ停止処理(llStopAnimation)しない方がいいのでしょうか。
わざわざllStopAnimationで停止しなくても、立つと自動的にアニメが停止されますが、
これは仕様ということでしょうか。
この仕様?に従って、自分でllStopAnimationしない方がいいのでしょうか。
※なんか人任せな感じですっきりしないので、自分でllStopAnimationを実行して停止しています。
以上、よろしくお願いします。
テクスチェンジのHUDについて
モール用のプリムカウンターを探しています
連続するアニメーションの処理
オブジェクトの上にフローティングテキストを出す。
チャットログの盗聴について
椅子に座った後で位置調整できるスクリプト
モール用のプリムカウンターを探しています
連続するアニメーションの処理
オブジェクトの上にフローティングテキストを出す。
チャットログの盗聴について
椅子に座った後で位置調整できるスクリプト
参考までに。
http://bb2.atbb.jp/lslbbs/viewtopic.php?t=48
※結構長いです
お教え頂いたBBSのように、アバ存在チェックしてから、アニメを停止するようにしてみました。
お陰様で、エラーはでなくなりました!
ありがとうございます。
ですが、やはり複数のアニメは停止することができませんでした><
全部を止める前に、アバ存在チェックにひっかかってしまいます。
あと、稀に、アバ存在チェックを抜けた後の、絶妙なタイミングでアバが居なくなり、エラーになってしまう場合もあります・・。
複数アニメを止めるのは不可能なのでしょうか・・。
また何かご存じでしたら、ご教授お願いします。
その経験からご参考になれば。
スクリプトから考えると「スクリプトエラー」を回避するのがまずは重要だと思います。なので、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されたら複数のアニメーションを瞬時にすべてとめられないので、立ってから移動してね、、、とお願い。
ということになると思います。
やはり複数アニメを止めるのは不可能なのですね。
立ち上がったら自動で止まるのに、TPしたら止まらないって、SLの設計ミスという気がしてしまいます。
存在チェックして、居ることを確認して、IF文の中に入った場合でも、その直後にアバターが居なくなり、エラーになる場合もありました。
そう考えると「チェックしてから止める」という処理もやめた方がいいのかな・・と思いました。
結局、立ちあがった時は何も処理しないのが一番良いのでしょうか・・・。
TPした後に、メニューの「すべてのアニメーションをとめる」を行った場合、
自分のビューワーではアニメが止まりますが、他の人から見るとアニメが再生され続けています。
この機能もSLの設計ミスなんじゃ?と思います。
この機能、紛らわしいですよね。
changed イベントの CHANGED_LINK はアニメーションを明示的に止めなくても、、、とめてくれるのですね。。。逆に勉強になりました。
エラー回避という意味では、前述は訂正しなくてはいけませんね。
なにもしない。。。これが良いのかもしれません。
お役に立てそうになく、すみません。
いろいろアドバイス頂き、ありがとうございます。
「何もしない」のが良さそうですよね。
かなり納得いきませんが・・・。
SLの仕様だから仕方無いですよね。
今後もよろしくお願い致します。
本当にありがとうございました。