LlTarget/ja

From Second Life Wiki
Jump to navigation Jump to search

要約

関数: 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 を呼び出すと、一番古い目標を削除します。

サンプル

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の関連した項目が参考になるかもしれません。