レベルのナビゲーション メッシュです。
コンストラクタとアクセサ
![]() | stingray.Level.navigation_mesh() stingray.LevelResource.create_navigation_mesh() stingray.NavigationMesh.merge() |
その他の関連リファレンス項目
![]() |
constrain_to_polygon ( self, p, poly ) : stingray.Vector3, boolean![]() ポイント p を指定されたポリゴンに制限し、結果の位置を返します。
|
self : | この関数を機能させるオブジェクト インスタンスを指定します。 この関数を呼び出す場合は、常にこの self パラメータを指定する必要があります。ドット . 呼び出し構文(オブジェクト指向のコロン : 呼び出し構文ではなく)を使用する必要があります。詳細については、この Stingray ヘルプ トピック、または Lua ドキュメントのこのページを参照してください。 | |
p : | 制限するポイント | |
poly : | integer | ポリゴンのインデックス |
結果の位置です。 | |
boolean |
始点がポリゴンの外側にあった場合や、結果内で移動された場合は true を返します。 |
![]() |
destroy ( world, mesh )![]() メッシュを破壊します。
|
world : | メッシュを所有するワールドです。 | |
mesh : | 破壊するメッシュです。 |
この関数は値を返しません。 |
この関数は NavigationMesh.merge() で作成されたメッシュに対してのみ呼び出す必要があります。
注: メッシュを破壊する必要はありません。ワールドが破壊されると自動的にメッシュも破壊されます。メッシュを明示的に破壊する必要があるのはメモリを早く開放する必要がある場合のみです。
その他の関連リファレンス項目
![]() |
find_nearest_polygon ( self, p ) : integer![]() ポイント p に最も近いメッシュ内のポリゴンを検索して、そのインデックスを返します。
|
self : | この関数を機能させるオブジェクト インスタンスを指定します。 この関数を呼び出す場合は、常にこの self パラメータを指定する必要があります。ドット . 呼び出し構文(オブジェクト指向のコロン : 呼び出し構文ではなく)を使用する必要があります。詳細については、この Stingray ヘルプ トピック、または Lua ドキュメントのこのページを参照してください。 | |
p : | 始点です。 |
integer |
最も近いポリゴンのインデックスを返します。 |
この関数は、ポイント p がメッシュの外側にある場合でもインデックスを返します。
![]() |
find_polygon ( self, p ) : integer?![]() ポイント p に最も近いメッシュ内のポリゴンを検索して、そのインデックスを返します。
|
self : | この関数を機能させるオブジェクト インスタンスを指定します。 この関数を呼び出す場合は、常にこの self パラメータを指定する必要があります。ドット . 呼び出し構文(オブジェクト指向のコロン : 呼び出し構文ではなく)を使用する必要があります。詳細については、この Stingray ヘルプ トピック、または Lua ドキュメントのこのページを参照してください。 | |
p : | 始点です。 |
integer? |
最も近いポリゴンのインデックスです(ポイントがメッシュの外側にある場合は nil)。 ? 表記は、このタイプが省略可能であることを示しています。ゼロ個または 1 個のインスタンスが存在します。 |
その他の関連リファレンス項目
![]() |
funnel ( self, path ) : integer[], integer[]![]() ポリゴンのパスを指定すると、この関数はそのパスの右側および左側のエッジ頂点で構成される 2 つのリストを返します。
|
self : | この関数を機能させるオブジェクト インスタンスを指定します。 この関数を呼び出す場合は、常にこの self パラメータを指定する必要があります。ドット . 呼び出し構文(オブジェクト指向のコロン : 呼び出し構文ではなく)を使用する必要があります。詳細については、この Stingray ヘルプ トピック、または Lua ドキュメントのこのページを参照してください。 | |
path : | table | ポリゴンのパスです。たとえば、NavigationMesh.search() で返されたパスなどです。 |
integer[] |
パスの左側のエッジ頂点のリストです。 []表記は、この型が配列(メンバーのキーは連番、各要素の値は示されている型のインスタンス)であることを示します。 |
integer[] |
パスの右側のエッジ頂点のリストです。 []表記は、この型が配列(メンバーのキーは連番、各要素の値は示されている型のインスタンス)であることを示します。 |
これはファンネル アルゴリズムの実装に使用できます。「Simple stupid funnel algorithm」を参照してください。
注: リスト内のポリゴンが扇形をしている場合、返されるリスト内で同じ頂点が繰り返されることがあります。返されるリストは パス数 - 1 個の項目で構成され、交差するポリゴン エッジ 1 つにつき 1 個の項目が返されます。
![]() |
is_obstructed ( self, poly ) : boolean![]() 指定されたインデックスが割り当てられているメッシュ内のノードの表示が妨げられているかどうかを示します。
|
self : | この関数を機能させるオブジェクト インスタンスを指定します。 この関数を呼び出す場合は、常にこの self パラメータを指定する必要があります。ドット . 呼び出し構文(オブジェクト指向のコロン : 呼び出し構文ではなく)を使用する必要があります。詳細については、この Stingray ヘルプ トピック、または Lua ドキュメントのこのページを参照してください。 | |
poly : | integer | ポリゴンのインデックス |
boolean |
指定されたインデックスが割り当てられているメッシュ内のノードの表示が妨げられている場合は true を返し、そうでない場合は false を返します。 |
![]() |
merge ( world, meshes, merge_tolerance ) : stingray.NavigationMesh![]() meshes テーブルで指定されたすべてのナビゲーション メッシュを合成して新しい NavigationMesh を作成します。
|
world : | 新しいメッシュを所有するワールドです。 | |
meshes : | 合成するナビゲーション メッシュをリストしたテーブルを指定します。 []表記は、この型が配列(メンバーのキーは連番、各要素の値は示されている型のインスタンス)であることを示します。 | |
merge_tolerance : | number | 隣接する 2 つの頂点を合成するときの最大距離をメートル単位で指定します。たとえば、merge_tolerance を 0.5 に設定すると、50cm 以内の距離にあるナビゲーション メッシュの頂点どうしがすべて合成されます。 |
新しく作成されたナビゲーション メッシュです。 |
この関数を呼び出すと、新しい NavigationMesh が指定されたワールドに作成されます。ワールドが破壊されるとナビゲーション メッシュも自動的に破壊されます。その前にナビゲーション メッシュを破壊するには、明示的に NavigationMesh.destroy() 関数を呼び出します。
合成を実行するには、合成されるエッジに沿ってすべての頂点が対応している必要があります。エッジが 1 つでも分割されていると、合成は実行されません。たとえば、次のようになります。
頂点どうしが対応しているので合成が実行されます。
合成は実行されません。
その他の関連リファレンス項目
![]() |
num_polygons ( ) : integer![]() メッシュ内のポリゴンの数を取得します。
|
この関数はパラメータを受け入れません。 |
integer |
メッシュ内のポリゴンの数です。 |
![]() |
num_vertices ( ) : integer![]() メッシュ内の頂点の数を取得します。
|
この関数はパラメータを受け入れません。 |
integer |
メッシュ内の頂点の数です。 |
![]() |
partial_search ( self, start, end, focus, max_search_nodes, max_distance ) : integer[]![]() NavigationMesh.search() と同様に A* 検索を実行して最も近いパスを始点またはポリゴンから終点まで検索しますが、この関数は終点に達するパスが存在しない場合でも常にパスを返します。
|
self : | この関数を機能させるオブジェクト インスタンスを指定します。 この関数を呼び出す場合は、常にこの self パラメータを指定する必要があります。ドット . 呼び出し構文(オブジェクト指向のコロン : 呼び出し構文ではなく)を使用する必要があります。詳細については、この Stingray ヘルプ トピック、または Lua ドキュメントのこのページを参照してください。 | |
start : | any(number, stingray.Vector3) | 検索の始点または最初に検索するポリゴンのインデックスです。 any(...) 表記は、この項目が括弧内に示されている任意のタイプのインスタンスであることを示しています。 |
end : | 検索の終点です。必ず Vector3 である必要があります。 | |
focus : | number | どの程度アグレッシブに検索を行うかを指定します。1 よりも大きい値に設定すると、よりアグレッシブに検索が実行され、展開されるノード数が少なくなりますが、最短パスが必ず見つかるとは限りません。たとえば focus を 1.2 に設定すると、最短パスの 1.2 倍の長さまでのパスを返すことが許容されます。 |
max_search_nodes : | integer | 検索時に確認するグラフ ノードの最大数を指定します。この値を調整することで、検索の実行時間を制限できます。この値を低くすると、2 つのノード間にパスが存在している場合でも見つからない可能性があります。 |
max_distance : | number | 検索パスの最長距離を指定します。ターゲットまでのパスのうち、この値よりも短いパスが見つからなかった場合は、空のテーブルが返されます。 |
integer[] |
ポリゴンのインデックスのテーブルとしてパスを返します。 []表記は、この型が配列(メンバーのキーは連番、各要素の値は示されている型のインスタンス)であることを示します。 |
終点に達しない場合、この関数は終点に最も近いパスを返します。
![]() |
polygon_neighbors ( self, poly ) : any(integer, nil)+![]() 指定されたインデックスが割り当てられているポリゴンに隣接するポリゴンのインデックスを取得します。
|
self : | この関数を機能させるオブジェクト インスタンスを指定します。 この関数を呼び出す場合は、常にこの self パラメータを指定する必要があります。ドット . 呼び出し構文(オブジェクト指向のコロン : 呼び出し構文ではなく)を使用する必要があります。詳細については、この Stingray ヘルプ トピック、または Lua ドキュメントのこのページを参照してください。 | |
poly : | integer | ポリゴンのインデックス |
any(integer, nil)+ |
poly で指定されたインデックスが割り当てられているポリゴンに隣接するポリゴンのインデックスを返します。 注: ポリゴンのエッジに隣接するものがない場合、返されるインデックスは nil となります。 + 表記は、指定されたタイプのインスタンスが 1 つまたは複数存在することを示しています。 any(...) 表記は、この項目が括弧内に示されている任意のタイプのインスタンスであることを示しています。 |
![]() |
polygon_vertices ( self, poly ) : integer+![]() 指定されたインデックスが割り当てられているポリゴンの頂点のインデックスを取得します。
|
self : | この関数を機能させるオブジェクト インスタンスを指定します。 この関数を呼び出す場合は、常にこの self パラメータを指定する必要があります。ドット . 呼び出し構文(オブジェクト指向のコロン : 呼び出し構文ではなく)を使用する必要があります。詳細については、この Stingray ヘルプ トピック、または Lua ドキュメントのこのページを参照してください。 | |
poly : | integer | ポリゴンのインデックス |
integer+ |
ポリゴンの頂点のインデックスを返します。 + 表記は、指定されたタイプのインスタンスが 1 つまたは複数存在することを示しています。 |
![]() |
project_to_polygon ( self, p, poly ) : stingray.Vector3![]() 指定されたポリゴンの平面に始点 p を投影します。
|
self : | この関数を機能させるオブジェクト インスタンスを指定します。 この関数を呼び出す場合は、常にこの self パラメータを指定する必要があります。ドット . 呼び出し構文(オブジェクト指向のコロン : 呼び出し構文ではなく)を使用する必要があります。詳細については、この Stingray ヘルプ トピック、または Lua ドキュメントのこのページを参照してください。 | |
p : | 投影するポイントです。 | |
poly : | integer | ポリゴンのインデックス |
結果の位置です。 |
![]() |
search ( self, start, start_pos, end, end_pos, focus, max_search_nodes, max_distance ) : integer[]![]() A* 検索を実行して最も近いパスを始点またはポリゴンから終点またはポリゴンまで検索し、見つかったパスを返します。
|
self : | この関数を機能させるオブジェクト インスタンスを指定します。 この関数を呼び出す場合は、常にこの self パラメータを指定する必要があります。ドット . 呼び出し構文(オブジェクト指向のコロン : 呼び出し構文ではなく)を使用する必要があります。詳細については、この Stingray ヘルプ トピック、または Lua ドキュメントのこのページを参照してください。 | |
start : | number | 最初に検索するポリゴンのインデックスです。 |
start_pos : | パス検索の操作に使用する開始位置です。 | |
end : | number | 最後に検索するポリゴンのインデックスです。 |
end_pos : | パス検索の操作に使用する終了位置です。 | |
focus : | number | どの程度アグレッシブに検索を行うかを指定します。1 よりも大きい値に設定すると、よりアグレッシブに検索が実行され、展開されるノード数が少なくなりますが、最短パスが必ず見つかるとは限りません。たとえば focus を 1.2 に設定すると、最短パスの 1.2 倍の長さまでのパスを返すことが許容されます。 |
max_search_nodes : | integer | 検索時に確認するグラフ ノードの最大数を指定します。この値を調整することで、検索の実行時間を制限できます。この値を低くすると、2 つのノード間にパスが存在している場合でも見つからない可能性があります。 |
max_distance : | number | 検索パスの最長距離を指定します。ターゲットまでのパスのうち、この値よりも短いパスが見つからなかった場合は、空のテーブルが返されます。 |
integer[] |
ポリゴン インデックスのテーブルとしてパスを返します。パスが見つからなかった場合は空のテーブルを返します。 []表記は、この型が配列(メンバーのキーは連番、各要素の値は示されている型のインスタンス)であることを示します。 |
![]() |
search ( self, start, end, focus, max_search_nodes, max_distance ) : integer[]![]() A* 検索を実行して最も近いパスを始点またはポリゴンから終点またはポリゴンまで検索し、見つかったパスを返します。
|
self : | この関数を機能させるオブジェクト インスタンスを指定します。 この関数を呼び出す場合は、常にこの self パラメータを指定する必要があります。ドット . 呼び出し構文(オブジェクト指向のコロン : 呼び出し構文ではなく)を使用する必要があります。詳細については、この Stingray ヘルプ トピック、または Lua ドキュメントのこのページを参照してください。 | |
start : | 検索の始点を指定します。最初のポリゴンを検索するために NavigationMesh.find_polygon () が内部的に呼び出されます。 | |
end : | 検索の終点です。最初のポリゴンを検索するために NavigationMesh.find_polygon () が内部的に呼び出されます。 | |
focus : | number | どの程度アグレッシブに検索を行うかを指定します。1 よりも大きい値に設定すると、よりアグレッシブに検索が実行され、展開されるノード数が少なくなりますが、最短パスが必ず見つかるとは限りません。たとえば focus を 1.2 に設定すると、最短パスの 1.2 倍の長さまでのパスを返すことが許容されます。 |
max_search_nodes : | integer | 検索時に確認するグラフ ノードの最大数を指定します。この値を調整することで、検索の実行時間を制限できます。この値を低くすると、2 つのノード間にパスが存在している場合でも見つからない可能性があります。 |
max_distance : | number | 検索パスの最長距離を指定します。ターゲットまでのパスのうち、この値よりも短いパスが見つからなかった場合は、空のテーブルが返されます。 |
integer[] |
ポリゴン インデックスのテーブルとしてパスを返します。パスが見つからなかった場合は空のテーブルを返します。 []表記は、この型が配列(メンバーのキーは連番、各要素の値は示されている型のインスタンス)であることを示します。 |
![]() |
search ( self, start, end, focus, max_search_nodes, max_distance ) : integer[]![]() A* 検索を実行して最も近いパスを始点またはポリゴンから終点またはポリゴンまで検索し、見つかったパスを返します。
|
self : | この関数を機能させるオブジェクト インスタンスを指定します。 この関数を呼び出す場合は、常にこの self パラメータを指定する必要があります。ドット . 呼び出し構文(オブジェクト指向のコロン : 呼び出し構文ではなく)を使用する必要があります。詳細については、この Stingray ヘルプ トピック、または Lua ドキュメントのこのページを参照してください。 | |
start : | number | 最初に検索するポリゴンのインデックスです。 |
end : | number | 最後に検索するポリゴンのインデックスです。 |
focus : | number | どの程度アグレッシブに検索を行うかを指定します。1 よりも大きい値に設定すると、よりアグレッシブに検索が実行され、展開されるノード数が少なくなりますが、最短パスが必ず見つかるとは限りません。たとえば focus を 1.2 に設定すると、最短パスの 1.2 倍の長さまでのパスを返すことが許容されます。 |
max_search_nodes : | integer | 検索時に確認するグラフ ノードの最大数を指定します。この値を調整することで、検索の実行時間を制限できます。この値を低くすると、2 つのノード間にパスが存在している場合でも見つからない可能性があります。 |
max_distance : | number | 検索パスの最長距離を指定します。ターゲットまでのパスのうち、この値よりも短いパスが見つからなかった場合は、空のテーブルが返されます。 |
integer[] |
ポリゴン インデックスのテーブルとしてパスを返します。パスが見つからなかった場合は空のテーブルを返します。 []表記は、この型が配列(メンバーのキーは連番、各要素の値は示されている型のインスタンス)であることを示します。 |
その他の関連リファレンス項目
![]() |
set_obstructed ( self, poly, is_obstructed )![]() メッシュ内で指定されたインデックスが割り当てられているポリゴンの表示が妨げられている状態かどうかを設定します。
|
self : | この関数を機能させるオブジェクト インスタンスを指定します。 この関数を呼び出す場合は、常にこの self パラメータを指定する必要があります。ドット . 呼び出し構文(オブジェクト指向のコロン : 呼び出し構文ではなく)を使用する必要があります。詳細については、この Stingray ヘルプ トピック、または Lua ドキュメントのこのページを参照してください。 | |
poly : | integer | ポリゴンのインデックス |
is_obstructed : | boolean | ポリゴンの表示が妨げられているものとしてマークするには true を、そうでない場合は false を使用します。 |
この関数は値を返しません。 |
![]() |
update_polygon ( self, p, poly ) : stingray.Vector3, stingray.Vector3, integer, boolean![]() ナビゲーション メッシュ上でキャラクタを移動するときに使用します。
|
self : | この関数を機能させるオブジェクト インスタンスを指定します。 この関数を呼び出す場合は、常にこの self パラメータを指定する必要があります。ドット . 呼び出し構文(オブジェクト指向のコロン : 呼び出し構文ではなく)を使用する必要があります。詳細については、この Stingray ヘルプ トピック、または Lua ドキュメントのこのページを参照してください。 | |
p : | メッシュ内でローカライズするポイントです。 | |
poly : | integer | 移動前のフレームでキャラクタが存在するポリゴンのインデックスです。 |
キャラクタの新しい位置です(メッシュに制限される可能性があります)。 | |
現在キャラクタが存在するポリゴンの法線です。 | |
integer |
現在キャラクタが存在するポリゴンのインデックスです。 |
boolean |
キャラクタを制限する必要がある場合(メッシュのエッジと衝突する場合)は true を返し、それ以外の場合は false を返します。 |
新しいポイントを p で指定し、キャラクタが最後のフレームで存在するポリゴンのインデックスを poly で指定すると、この関数は現在キャラクタがどのポリゴンに存在するかを計算し、必要に応じてキャラクタの位置をナビゲーション メッシュに制限します。
一般的な使用例:
self.position = self.position + move_vector
self.position, self.normal, self.poly = NavigationMesh.update_polygon(self.mesh, self.position, self.poly)
![]() |
vertex ( self, v ) : stingray.Vector3![]() 指定されたインデックスが割り当てられている頂点の位置を取得します。
|
self : | この関数を機能させるオブジェクト インスタンスを指定します。 この関数を呼び出す場合は、常にこの self パラメータを指定する必要があります。ドット . 呼び出し構文(オブジェクト指向のコロン : 呼び出し構文ではなく)を使用する必要があります。詳細については、この Stingray ヘルプ トピック、または Lua ドキュメントのこのページを参照してください。 | |
v : | integer | 頂点のインデックスです。 |
頂点の位置です。 |
![]() |
visualize_last_search ( self, lines )![]() 指定された LineObject を使用してデバッグ用に最後の検索を視覚化します。
|
self : | この関数を機能させるオブジェクト インスタンスを指定します。 この関数を呼び出す場合は、常にこの self パラメータを指定する必要があります。ドット . 呼び出し構文(オブジェクト指向のコロン : 呼び出し構文ではなく)を使用する必要があります。詳細については、この Stingray ヘルプ トピック、または Lua ドキュメントのこのページを参照してください。 | |
lines : | パスの描画に使用する LineObject を指定します。 |
この関数は値を返しません。 |
検出されたパスは黄色の線で描画され、パスのその他の部分(展開されたが使用されなかったノード)は青色の線で描画されます。
この関数は開発用のビルドでのみ使用可能です。