問題タブ [navmesh]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - ゲームAIのランダムウォーク+探索アルゴリズム。シーンタイル
シーンタイルベースのゲームでランダムウォークするためのアルゴリズムを考え出そうとしています。歩行者は、すべてのタイルが探索されるまで、または次のレベルが見つかるまで、ランダムにナビゲートできる必要があります。
これまでのところ、アクターがタイルを踏んだ場合に探索されたタイルがあります。
次に、次のタイルの中心へのパスを見つけます。
しかし、失敗した場合は、探索が終了した、またはタイルが残っていないと考えることがよくあります。
ソースを貼り付けるのと同じように、いくつかの例を探す場所はありますか。
javascript - ナビゲーション メッシュ パスファインディング (ポリゴン)
私は JavaScript でポイント アンド クリック アドベンチャー ゲームを作成していますが、全体の動きの仕組みについて助けが必要です。
このテーマについて私が集めたものから、ナビゲーション メッシュと A* パスファインディング アルゴリズムという 2 つの主なテーマがあるようです。しかし、私の人生では、これらを組み合わせた JS 実装を見つけることができませんでした。
私が見つけたすべての A* 実装はグリッドベースです。
私が探しているのは、基本的に、大きなポリゴン内をナビゲートする方法です。
ある程度理解できたと思いますが、自分で完全に理解できたかどうかはわかりません。
mesh - Ogreに地形をロードし、Recast/Detourを使用してナビゲーションメッシュを作成します
私はOgre、特にRecast / Detourを初めて使用するので、少し助けが必要です。
Ogreに地形をロードし、Recast/Detourを使用してその上にナビゲーションメッシュを作成しています。現時点では、建物などの他のオブジェクトを含めることができない.meshファイルしかロードできないため、より複雑な地形をロードしたかったのです。これを行うには2つの方法が考えられます。 :
1)Blenderで.objファイルを.sceneファイルにエクスポートします。次に、DotSceneなどのサードパーティの.sceneローダーを使用して、これらをOgreにロードします。次に、シーン全体の上にナビゲーションメッシュを作成するためにRecastを取得する方法を理解する必要があります。
2)または、まだあまり読んでいないOgreの新しい地形ローディングシステムを使用します。
では、OgreとRecast / Detourを使用するプロジェクトに取り組んだ場合、地形の読み込みとナビゲーションメッシュの作成をどのように達成しましたか?
編集:現在のソリューションを維持しながら、複雑な地形をロードできる3番目のオプションを見つけました。Blenderを使ってOgreメッシュを1つの巨大なメッシュファイルに結合する方法を考え出しました。地形を.sceneとしてロードすることはできますが、navmesh作成手順は、そのようにロードされたエンティティでは機能しません。一方、ロードされた巨大なメッシュは、私がすでに持っていたのと同じ機能を使用できます。
unity3d - NavMeshAgent は unity 3d のインポートされた 3d モデルで正しく設定できませんでした
Unity 3d でインポートした 3D モデルに NavMeshAgent を設定しようとしていますが、navMeshAgent を 3D モデルの周囲に正しく設定できませんでした。半径を拡張すると、3D オブジェクトよりも不要な部分がカバーされます。
unity3d - Unity の NavMesh とは?
NavMesh
Unity3dの現在について知りたいです。なぜ使用されるのですか?ゲーム開発者にどのような機能を提供しますか?
c# - メッシュをナビゲーション用のグラフに変換する
補足: この質問がゲーム開発スタック交換サイトに属しているかどうかはわかりませんが、コンテキストはゲームですが、実装しようとしているアルゴリズム自体はかなりアプリケーションに依存しないため、ここに属していると思います。さらに、高度なテクニックを求めているわけではありません。すでに確立されていると感じているからです。代わりに、特定の問題に対するより具体的なヘルプを求めています。とにかく、質問に:
こんにちは、みなさん!
私は、サーバーがサーバー制御エンティティのパスファインディングを実行できる必要があるマルチプレイヤー ゲームに取り組んでいます。サーバーはストレートな C# アプリケーションで、クライアントは Unity ゲーム エンジンを使用します。サーバーで Unity を使用することはオプションではありません。さらに、ネイティブ ライブラリは完全に避けたいと考えています。
Detour の経路探索については既に調べました。これらには C# ポートがありますが、実際の経路探索ビットの独自の実装が必要です。プロセスは簡単なので、サーバー上の既存のコンポーネントとうまく連携できるように、自分のニーズに合わせて調整したいと考えています。
Unity には、Recast/Detour のサポートが組み込まれています。Unity で Recast を使用してナビゲーション メッシュを生成できるので、これは良いことです。次に、独自のパスファインディングを使用してサーバーで消費します。問題は、Unity/Recast によって作成されたメッシュに基づいてグラフを生成する適切な方法が見つからないように見えることです。
私がする必要があるのは、メモリ内にグラフを作成することです。ここで、各ノードはメッシュ内の三角形であり、グラフの各エッジは互いに隣接する 2 つの三角形を接続します。
Unity の API から抽出できるデータは、生成されたメッシュの頂点と三角形のインデックスだけなので、独自のグラフを再構築する必要があります。私の最初の実装では、単純に三角形ごとにノードを作成し、その三角形が他の 2 つのポイントを別の三角形と共有している場合、それらの間にリンクを作成して、グラフのエッジを形成しました。
これはメッシュの大部分でうまく機能しますが、2 つの頂点を共有していなくても、領域 (ポリゴン) 間に接続 (エッジ) を持つことができるメッシュを Unity が吐き出しているように見えるため、不十分です。Unity が生成した navmesh をレベル ジオメトリにオーバーレイする例を次に示します (Unity は三角形を凸面ポリゴンにマージしますが、私のコードはマージしません - ただし、どちらの場合も問題は依然として存在します)。
この例では、生成されたグラフは白い線で区切られたポリゴンを接続する必要があります (Unity で白としてレンダリングされる理由を説明するドキュメントは見つかりません) が、単一の頂点しか共有していないため、接続できません。
これらのケースを検出するための効率的なアルゴリズムがあるかどうか疑問に思っています。私が考えているのは、ポリゴンが接続されていると見なされるようにすることです:
これでうまくいくと思いますが、これを効率的に行う方法が見つかりません。また、「isPointInLine」の実装に少し問題があります。どうやら私の数学のスキルは、思ったよりも錆びているようです。
いずれにせよ、もっと簡単な解決策が必要です。それでも、その方向性を示すものはオンラインで何も見つかりませんでした...そのため、生成された navmesh を接続されたポリゴンのグラフに効率的に変換するためにできることがあるかどうか、素晴らしい人々に尋ねています。isPointInLine の実装に役立つか、より賢明なアルゴリズムの方向性を教えていただければ、言葉では言い表せません。
c# - Unity 3D での KVO またはその他のプロパティ観測パターン
オブジェクトのプロパティの 1 つが変更されたときに、関数を呼び出そうとしています。せいぜいハックは言うまでもなく非効率なプロパティを常にポーリングする以外に、Unity 3D で C# スクリプトを使用してそうする方法を見つけることができないようです。
具体的には、NavMeshAgent オブジェクトの isOnOffMeshLink プロパティを使用して、特定のアニメーションをいつ再生および停止するかを決定しています。
どんな助けでも大歓迎です。
編集: isOnOffMeshLink は読み取り専用プロパティであり、アニメーションは実行時に再生されます
unity3d - Unity NavMesh 障害物
Unity で RTS ゲームを作成しようとしていますが、パス検索に問題があります。経路探索に NavMesh を使用していますが、うまく機能します。ユニットは静的オブジェクトを回避します。しかし、ユニットはお互いを避けません。NavMesh Obstacle というコンポーネントがあり、ユニットは非静的オブジェクトを回避できますが、ユニットがそれ自体を回避しようとするため、NavMesh エージェントでは機能しません。では、ユニット同士はどうすれば回避できるのでしょうか?
unity3d - Unity NavMesh 複数の敵が異なる経路を取るようにする
複数の敵がすべて同じターゲットに向かって移動するゲームに取り組んでいます。私が抱えている問題は、すべての敵がこのターゲットに到達するために同じ経路をたどっているため、非現実的な敵の「群れ」が発生することです. 私の質問はこれです:どうすればそれらを少し広げて混雑効果を生み出すことができますか? 現在、Unity の組み込み NavMesh システムを使用しています。ある敵が使用するパスにペナルティを課して、他の敵が別のパスを取るように促す方法があるに違いないことは知っていますが、それを実装する方法がわかりません。どんな助けでも大歓迎です!(また、コードは C# で最もよく理解できますが、JavaScript は多少理解できます)
3d - パスファインディング用のナビゲーション メッシュを作成するには?
ナビゲーション メッシュがどのように機能するかは理解していますが、実際にどのように作成すればよいでしょうか。
私の推測では、一定の z 軸値などの特定の制約セットを使用してランダムな頂点を選択し、頂点間の指定された最小間隔以上のランダムなポイントを選択して、メッシュが有限の領域を持つようにするなどでした。
ご覧のとおり、これをどのように達成できるかについて、私はあまり知識がありません。navmesh の作成は、私にはより手動のように思えます。3D 環境で凸状メッシュを作成する効果的な方法は何ですか?