10/03 更新
わかりましたので、問題を理解しました。C# は面白い古い言語です..変更しました
int navMeshCount = navMesh.GetPath(ref start, ref end, routePolys, navMeshRoute, false);
に
var navMeshCount = navMesh.GetPath(ref start, ref end, routePolys, navMeshRoute, false);
そして最後に、パスファインディングの値が機能するようになりました!
routeNavMesh 配列をデバッグすると、必要な値でいっぱいになります。
http://i.imgur.com/QgH8UL6.png [問題のデバッグのスクリーン キャプチャ]
終わったらまた更新します。
ナビゲーションメッシュを機能させるにはいくつかの大きな問題があります。特に、パスファインディングを実行したり、有用な方法で vector3 入力に応答したりすることができません。
Sunburn エンジンに取り組んでいます。XNA 4.0 の上にあるため、すべての XNA 関数を引き続き使用できます。
最近、Duck のブログのダイジェストから Recast Navigation が C# に移植され、それを使用して自分のレベルのナビゲーション メッシュを作成しました。これは、私が従おうとしているチュートリアル/ガイドへのリンクです: http://xboxforums.create.msdn.com/forums/p/109484/647991.aspx
getpath セグメントで開始値と終了値を渡す方法がわかりません。これらは、ワールド空間またはオブジェクト空間などの値であることを意味していますか? vector3 値を実行し、それらを開始値と終了値として入力すると (その後、配列上の場所にそれらを設定します)、パス検索を示す値の配列を取得せず、navmeshroute 内の 2 つの逐語的な値を取得するだけです配列。
ここで、パスを実行しようとします。これは私の更新プログラムにあります。
routePolys = new ushort[dtStatNavMesh.MAX_POLYS];
navMeshRoute = new Vector3[dtStatNavMesh.MAX_POLYS];
if (ks.IsKeyDown(Keys.L))
{
if (!runOnce)
{
start = new Vector3(0, 0, 0);
end = new Vector3(1000, 0, 1000);
ppos = x;
navMeshRoute[0].X = start.X;
navMeshRoute[0].Y = start.Y;
navMeshRoute[0].Z = start.Z;
navMeshRoute[count].X = end.X;
navMeshRoute[count].Y = end.Y;
navMeshRoute[count].Z = end.Z;
int navMeshStart = 0;
navMesh.GetPath(ref start, ref end, routePolys, navMeshRoute, true);
Console.WriteLine("navMeshPC" + navMesh.getPolyCount());
int navMeshCount = navMesh.GetPath(ref start, ref end, routePolys, navMeshRoute, true);
while (navMeshStart < navMeshCount)
{
routeNode = navMeshRoute[navMeshStart++];
}
Console.Out.WriteLine("NMc : " + navMeshCount);
}
}