LlTarget/ja

From Second Life Wiki
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

要約

関数: integer llTarget( vector position, float range );

この関数で、ある位置に到達したときに、スクリプトにそれを知らせることができます。
positionrange と一緒に登録し、登録解除されるまで at_targetnot_at_target のイベントを継続的に発生させ続けます。
llTargetRemove を使って目標を登録解除するためのハンドラを integer で返します。

• vector position
• float range

同じような関数が回転についてもあります: llRotTarget
この関数はオブジェクトを移動させません。移動させるには、 llSetPosllMoveToTarget を使用します。

警告

  • 位置は常に現在の地域に相対するものです。地域 A にいるときに llTarget に <100, 100, 100> を指定し、それからオブジェクトを地域 B に移動させると、目標は自動的に地域 B の <100, 100, 100> になります。
  • 地域の境界線の外に位置を設定することもできますが、 at_target は範囲が現在の地域に収まっている場合にだけ発生します。現在の地域の外にある範囲では、 at_target は発生しません。
  • 1 つのスクリプトで 8 つの目標までを設定することができます。それ以上 llTarget を呼び出すと、一番古い目標を削除します。
All Issues ~ Search JIRA for related Bugs

サンプル

integer target_id;
vector target_pos;

default
{
    state_entry()
    {
        target_pos = llGetPos() + <1.0, 0.0, 0.0>;
        target_id = llTarget(target_pos, 0.5);
    }
    at_target(integer tnum, vector targetpos, vector ourpos)
    {
        if (tnum == target_id)
        {
            llOwnerSay("オブジェクトは目標範囲に入っています");
            llOwnerSay("目標位置: " + (string)targetpos + ", オブジェクトの現在位置: " + (string)ourpos);
            llOwnerSay("これは目標から " + (string)llVecDist(targetpos, ourpos) + " メートル離れています");
            llTargetRemove(target_id);
        }
    }
    not_at_target()
    {
        llOwnerSay(
            "まだ到達していません - オブジェクトは " + (string)llGetPos() + 
            " にあり, それは目標から " + (string)llVecDist(target_pos, llGetPos()) + 
            " メートル離れています (" + (string)target_pos + ")"
        );
    }
}

関連項目

イベント

• at_target not_at_target 位置目標に達したときのイベント
• at_rot_target not_at_rot_target 回転目標に達したときのイベント

関数

•  llTargetRemove 位置目標を登録解除します
•  llRotTarget 回転目標を登録します
•  llRotTargetRemove 回転目標を登録解除します

特記事項

Search JIRA for related Issues

Signature

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