LlSetRot/ja
From Second Life Wiki
警告
- この関数は0.2秒間、スクリプトを停止します。
- プリムが装着されている場合、この関数はアバタの回転によって相殺します。
- プリムがルートプリムではない場合、ルートプリムのローカル回転によって相殺されます。回避策はルートプリムの回転で割ることです。
- ルートプリムと相対的に子プリムの回転を設定しようとしている場合、ルートプリムの回転でローカル回転を割ります。
- グローバル回転を子プリムの回転へ設定しようとしている場合、2倍にしたルートプリムの回転でグローバル回転を割る必要があります。
- たとえグローバル回転を子プリムの回転に設定するとしても、子プリムの回転を設定するにはllSetLocalRotを使うとよりうまくいきます。 (その場合、ルートプリムの回転と掛けます。)
- 装着されたオブジェクトの、ルートプリムのローカル回転を取得するのは容易ではありません。(ほかにはルートプリムから取得する方法が存在します)
- 小さく回転するには、変更する時間帯の間隔に応じて、基準点を上げます。6°より下に制限しているように見せることはできません。
例
回転を1°ずつ増加するプリムに、このスクリプトをドロップします。
rotation rot_xyzq; default { state_entry() { vector xyz_angles = <0,1.0,0>; // This is to define a 1 degee change vector angles_in_radians = xyz_angles*DEG_TO_RAD; // Change to Radians rot_xyzq = llEuler2Rot(angles_in_radians); // Change to a Rotation } touch_start(integer s) { llSetRot(llGetRot()*rot_xyzq); //Do the Rotation... } }

