添加点击以将路径查找移动到我当前在Unity中的2D项目

时间:2017-05-01 21:27:36

标签: c# unity3d path-finding

我目前有一个带有正交相机的2D场景,我可以用我的WASD键移动我的播放器,这很棒。我想添加点击移动的功能,但我有点迷失方法。我已阅读/观看了一些教程,一切似乎都围绕着Nav / Mesh系统。

我的问题是,我当前的地面和墙壁场景上都有Sprite Renderers和/或BoxColliders,我不能在同一个GameObject上有Sprite Renderer和Mesh Renderer。这是我所拥有的快速屏幕截图:

enter image description here

现在我明白我可以轻松创建一个用

移动的点击
Camera.main.ScreenToWorldPoint(Input.mousePosition);

并使用

移至该位置
Vector3.MoveTowards(transform.position, target, speed * Time.deltaTime);

我现在面临的挑战和我想要的知识是,如果我在屏幕截图中有类似的东西,如果我在房子下方并点击我的角色将要走的房子上方,我该如何添加某种路径查找系统在房子周围到达那里?

我甚至需要编辑我当前的精灵吗?我有一个想法,我只是创建额外的GameObjects添加网格过滤器和网格渲染器与"无"对于材料并将它们放置在我的场景周围的拼图块中,这将代表我希望我的玩家移动的区域。

这种方法我认为可行吗?太多了吗?有更简单的方法吗?

1 个答案:

答案 0 :(得分:2)

您可以使用" NavMeshAgent"移动你的播放器。 " NavMeshAgent"组件附加到游戏中的移动角色,以允许它使用NavMesh导航场景。

一旦你烘焙了NavMesh它易于使用 -

navMeshAgent.SetDestination(target);

参考 - Video Tutorial to create and use nav meshUnity Script referenceNavigation and Path Finding

按照以下步骤学习如何烘焙导航网格 -

  1. 创建一个3D立方体并将其缩放到(20,1,20)以使其落地(也将其重命名为地板)。
  2. 创建另一个3D立方体,将其放置在地板内并在Y轴上缩放5(重命名为house)。
  3. 从第2步复制立方体并更改其位置,使其与其他房屋不重叠。
  4. 转到窗口>导航。这将打开导航面板,并选中对象选项卡。
  5. 在层次结构中选择楼层对象。然后点击"导航静态"复选框。
  6. 弹出窗口会要求为儿童启用静态导航,点击"是"。
  7. 转到" Bake"导航面板中的选项卡,然后单击"烘焙"底部的按钮。
  8. 您应该能够看到生成的导航网格为蓝色。
  9. 相同的屏幕截图 - enter image description here