2010年05月15日
アタッチオブジェクトの移動について

スクリプトの製作依頼で、気がついたことを備忘録として記述しておきます。
アタッチオブジェクトを位置移動させるときに、短い移動距離だと
llSetPosで指定しても、うまく動かなかったり、何回も実行すると
大きく移動したりします。
これは、SLのバグに起因している。(再描画がうまく実行されないのが原因)
このため、このバグを回避するためには、以下の方法を利用するとよい。
まず、移動命令をするまえにオブジェクト自体の大きさを変更します。
で、移動させて、元の大きさに戻す。
コードにすると
// 元のサイズを記憶
vector vctScale = llGetScale();
// 現在の場所を記憶
vector vctPos = llGetLocalPos();
// 人の目では認識できないぐらいの誤差で大きさを変更
llSetScale(vctScale + <0.00001, 0.0, 0.0>);
// 場所を移動(この場合は、Z方向に移動)
llSetPos(vctPos + <0.0, 0.0, 0.001>);
// 元の大きさに戻す
llSetScale(vctScale);
llSetScaleは、ほとんどタイムラグが無いので割とスムーズに動きます。
アクセサリー製作をしている方には、かなり既知な事柄かも知れませんが、
私はしりませんでした。^^;
テレポーターが動かない人へ
スクリプト教室 卒業制作 作品紹介 その14
スクリプト教室 卒業制作 作品紹介 その13
スクリプト教室 卒業制作 作品紹介 その12
スクリプト教室 卒業制作 作品紹介 その11
スクリプト教室 卒業制作 作品紹介 その10
スクリプト教室 卒業制作 作品紹介 その14
スクリプト教室 卒業制作 作品紹介 その13
スクリプト教室 卒業制作 作品紹介 その12
スクリプト教室 卒業制作 作品紹介 その11
スクリプト教室 卒業制作 作品紹介 その10
Posted by karasu blackburn at 20:24│Comments(0)
│スクリプト