LlGetClosestNavPoint/ja

From Second Life Wiki
< LlGetClosestNavPoint
Revision as of 11:01, 22 November 2023 by Misaki Vanilla (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

要約

関数: list llGetClosestNavPoint( vector point, list options );

pointに最も近いナビメッシュ上のポイントを取得するために使用されます。
pointに最も近いナビメッシュ上のポイントを含む単一のベクトル、または空のリスト。を list で返します。

• vector point A point in region-local space
• list options GCNP_* およびその他のフラグとそれに対するパラメータ。optionsテーブルを参照してください。

オプションが明示的に設定されていない場合、そのオプションのデフォルト値が使用されます。

オプション V パラメータ デフォルト 説明
GCNP_RADIUS ] 0 float distance ] 20.0 ] ナビゲーションポイントを検索する範囲を制限します。
GCNP_STATIC ] 1 integer use_static_mesh ] FALSE ] テストが静的または動的なナビメッシュを使用するかどうかを指定します。静的な場合、すべての動的な障害物は無視されます。
CHARACTER_TYPE ] 6 integer type ] CHARACTER_TYPE_NONE ] 指定されたキャラクタータイプのために0%歩行可能でないナビメッシュフェイスを排除して、ナビゲーションポイントをフィルタリングします。デフォルトのCHARACTER_TYPE_NONEの場合、すべてのナビメッシュフェイスが含まれます。

警告

  • 現在の位置から返されたポイントまでの経路が存在することを保証するものではありません。

サンプル

create_character()
{
//  Clear any previous character behaviors
    llDeleteCharacter();

//  default speed is 20
    llCreateCharacter([CHARACTER_DESIRED_SPEED, 10.0]);
    llWanderWithin(llGetPos(), <64.0, 64.0, 2.0>, []);
}

default
{
    on_rez(integer start_param)
    {
        llResetScript();
    }

    state_entry()
    {
        create_character();
    }
 
    touch_start(integer num_detected)
    {
        vector currentPos = llGetPos();
        list points = llGetClosestNavPoint(currentPos, [GCNP_RADIUS, 10.0] );

        if (!llGetListLength(points))
            return;

        llSay(0, "current position " + (string)currentPos
            + " and closest nav point " + (string)llList2Vector(points, 0) );
    }
}

注意点

このメソッドの使用は1フレームのスクリプトスリープを発生させ、呼び出しは非常に高コストです。これは、要求された目的地に到達できないことを示すpath_updateメッセージに対応して使用することが意図されています(たとえば、キャラクターまたは目的地がメッシュの外にある場合など)。

特記事項

経緯

Date of Release 31/07/2012

Search JIRA for related Issues

Signature

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