LlTargetOmega/ja

From Second Life Wiki
Jump to navigation Jump to search

要約

関数: llTargetOmega( vector axis, float spinrate, float gain );

spinrate * llVecMag(axis) ラジアン/秒、 gain の強度で axis 軸の周りをオブジェクトやプリムが回転するようにします。

• vector axis オブジェクトに周りを回転させる任意の軸
• float spinrate ラジアン/秒で表現された回転率
• float gain 最終的なスピン速度を調節します。 0 の場合回転動作を停止します。

仕様

物理

  • オブジェクトが物理属性でない場合、影響を受けるのはクライアント側だけです。ユーザが目の当たりにしている回転をスクリプトが検出したり確認したりすることは できません
  • オブジェクトが物理属性の場合、物理表現は定期的にアップデートされます。ユーザが目の当たりにしている回転をスクリプトが検出したり確認したりすることが できます

リンクセット

  • スクリプトがルートプリムにアタッチされている場合、オブジェクト全体が リージョン axis 周囲を回転します。
    • オブジェクトが装着されている場合、装着 axis の周囲を回転します。
  • スクリプトが子プリムにアタッチされている場合、プリムは ローカル axis 周囲を回転します。
    • オブジェクト全体が別の axis の周りを回っていても、子プリムは自分の axis の周りを回ることができます。

警告

  • オブジェクトが物理ではない場合、回転はクライアント側だけの効果となり、移動していないジオメトリとして衝突することになります。
  • 関数が動いていないように見えるときは、Advanced > Network > Velocity Interpolate Objects (ビューワ 1.x) または 開発 > ネットワーク > 速力が挿入されたオブジェクト (ビューワ 2.x) が有効になっていることを確認しましょう。

サンプル

<lsl>//X 軸の周りを 1 秒に 1 回回り、 // Y 軸の周りを 1 秒に 3 回回り、 // Z 軸の周りを 2 秒で 1 回回ります。 // 速度を混ぜ合わせると、 1 秒に約 3.20156 回転することになります。

llTargetOmega(<1.0,3.0,0.5>,TWO_PI,1.0);</lsl>

<lsl> //球のローカル Z 軸の周りを非常にゆっくり回ります .... 傾いた軸の周りを回る地球を作るのにいいでしょう

default {

   state_entry()
   {
      llTargetOmega(llRot2Euler(llGetLocalRot())*(llEuler2Rot(<90,0,0>*DEG_TO_RAD)),0.1,0.01);
   }
}</lsl>

注意点

  • axisllVecNorm を使うと、 spinrate は実際の回転率と同じものとなります。
  • gain を 0 に設定すると、回転動作を停止・削除することになります。例えば、 llTargetOmega(ZERO_VECTOR, 0, 0); のように。
    • spinrate が 0 で gain が 0 以外の場合、オブジェクトは以前の llTargetOmega() の設定をクリアするのではなく、全ての回転を止めようとします。
  • (llSetForce を使ってオブジェクトを浮かせているなど) llTargetOmega() と同時に働かせている力が他にある場合は、llTargetOmega(-llGetOmega(), 0., 1.) を使って回転を止めます。 gain は 0 以外でなくてはならないことに気をつけてください。しかし、 1 でなくても構いません。

特記事項

Search JIRA for related Issues

テスト

•  llTargetOmega test

Signature

function void llTargetOmega( vector axis, float spinrate, float gain );
この翻訳は 原文 と比べて古いですか?間違いがありますか?読みにくいですか?みんなで 修正 していきましょう! (手順はこちら)
この項目はあなたにとって参考にならない項目ですか?もしかしたらLSL Wikiの関連した項目が参考になるかもしれません。