LlMoveToTarget/ja

From Second Life Wiki
Jump to navigation Jump to search

要約

関数: llMoveToTarget( vector target, float tau );

(スクリプトが物理の場合) tau 秒かけて限界減衰し、 target へ到達します。

• vector target リージョン 位置
• float tau 臨界減衰までにかける秒数

オブジェクトに target 位置を維持するのをやめさせるには、 llStopMoveToTarget を使用してください。
同じように回転を変更させるには、llLookAtllRotLookAt を使用してください。

警告

  • アタッチメントと 物理 オブジェクトのみで動作します。
  • 低い Z 値を指定してゆっくり進んでいくときは、 SVC-2441 に気をつけてください - SIM は誤ってオブジェクトを本来の速度よりも速く進めてしまいます。つまり、 llGetPos() + <10, 10, -10> に進めようとしている時、.x-10 と .y-10 に到達する何メートルか前に .z-10 に到達してしまうことがあります。JIRA にこの結果を示すデモがあります。
  • llMoveToTarget の呼び出しは物理属性が無効にされても(移動はしないものの)残るようです。これを役立てるトリックとしては、遅い SIM で物理属性を有効にする呼び出しと、llMoveTarget の呼び出しの間にオブジェクトが少し落下してしまう場合、単純に先に llMoveToTarget を呼び出してからオブジェクトを物理に設定する事で解決出来ます。
  • llVecDist(llGetPos(), target) は 65 より小さく なければなりません。そうでない場合、一切移動しません。
  • tau0.0 にして llMoveToTarget を呼び出すと、警告もなく失敗して、何もしません。

サンプル

スクリプトをプリムにドロップすると、プリムのオーナーを追跡します。 <lsl> default {

   state_entry()
   {
       vector pos = llGetPos();
       llSetStatus(STATUS_PHYSICS, TRUE);
       // ちょっと間を置いて、サーバがたくさんリンクされたオブジェクトを物理にするのを待ちます。
       llSleep(0.1);
       llMoveToTarget(pos,0.4);
       // オーナーを 20 メートル以内 の 360° の弧で 1 秒おきに探します。
       llSensorRepeat("", llGetOwner(), AGENT, 20.0, PI,1.0);
   }
   sensor(integer total_number)
   {
       // 発見したオーナーの位置を取得します。
       vector pos = llDetectedPos(0);
       // グローバル座標で、X を 1 メートル下げ、Z を 1 メートル上げます。
       // オーナーに対してのオフセットを取ることもできますが、このサンプルの範疇を超えています。
       vector offset =<-1,0,1>;
       pos+=offset;
       llMoveToTarget(pos,0.4);     
   }

}

</lsl>

関連項目

関数

•  llStopMoveToTarget
•  llLookAt
•  llRotLookAt
•  llTarget

特記事項

All Issues

~ Search JIRA for related Issues
   Slowish llMoveToTarget path inconsistent when moving to a target at a -z position vs moving to +z

Signature

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