Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# A*是否能够处理多个楼层(例如:多层建筑)?_C#_Unity3d_3d_Path Finding_Voxel - Fatal编程技术网

C# A*是否能够处理多个楼层(例如:多层建筑)?

C# A*是否能够处理多个楼层(例如:多层建筑)?,c#,unity3d,3d,path-finding,voxel,C#,Unity3d,3d,Path Finding,Voxel,我有一个3D体素游戏,我正试图找到最合适的寻路算法来使用。我一直在想A*算法是否能够处理多个楼层,例如多层建筑,并通过楼梯或梯子找到路线 这是可能的,还是我应该用别的东西 提前感谢。只要使用正确,任何路径查找算法(统一或非统一)都可以使用。您必须首先决定要使用哪种路径查找,这取决于您想要实现的目标 由于节点过多,对于多层建筑,统一或图形算法可能会有大量开销。(假设您正在同时构建整个建筑) 非一致性算法比图算法慢得多,但没有太大的开销 这实际上取决于你希望你的角色做什么,以及你将如何优化它 A*很

我有一个3D体素游戏,我正试图找到最合适的寻路算法来使用。我一直在想A*算法是否能够处理多个楼层,例如多层建筑,并通过楼梯或梯子找到路线

这是可能的,还是我应该用别的东西


提前感谢。

只要使用正确,任何路径查找算法(统一或非统一)都可以使用。您必须首先决定要使用哪种路径查找,这取决于您想要实现的目标

由于节点过多,对于多层建筑,统一或图形算法可能会有大量开销。(假设您正在同时构建整个建筑)

非一致性算法比图算法慢得多,但没有太大的开销

这实际上取决于你希望你的角色做什么,以及你将如何优化它

A*很快,但您可能希望查看类似于*的跳点系统的一些迭代。

。如果有一个好的楼梯行为可以有效地自动使用,NavMesh会找到它


否则,您将需要使用一种称为分层搜索的方法

这是一个图形算法,所以,是的。我建议阅读图表的工作原理。我可以强化@BlueRaja DannyPflughoeft所说的内容,有趣的是,我只是在学习:),unity有一个高质量的资产tho:很棒,强烈推荐。真正的问题是,对于多层建筑,你不能仅仅让探路者放松,它可能会告诉你走出窗户,缩放墙壁(和/或飞行)。你必须正确设置网格,并假设你不能垂直移动,除非地板垂直(如楼梯)。如果代理需要走楼梯,您需要加权A*以搜索楼梯,然后goal.navMesh对于静态世界非常有用,但由于这是一个体素游戏,玩家可以随时更改任何内容。据我所知,我们需要烘烤。如果玩家决定e。G:建造一堵墙,然后每次放置一个块时,相应的世界块都会更新,因此Navmesh也必须更新,从而导致游戏不共振。我不知道我是否完全正确。是的,先试试。事实上,你的代理人不一定马上就需要这条路。此外,您不需要重新计算整个navmesh以进行小的更改,请仔细阅读文档并考虑如何使用navmesh的“单元”。