LlGetClosestNavPoint/ja
Jump to navigation
Jump to search
LSL ポータル | 関数 | イベント | 型 | 演算子 | 定数 | 実行制御 | スクリプトライブラリ | カテゴリ別スクリプトライブラリ | チュートリアル |
要約
関数: list llGetClosestNavPoint( vector point, list 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メッセージに対応して使用することが意図されています(たとえば、キャラクターまたは目的地がメッシュの外にある場合など)。
関連項目
特記事項
この項目はあなたにとって参考にならない項目ですか?もしかしたらLSL Wikiの関連した項目が参考になるかもしれません。