Unity3D架构设计NavMesh寻路(未完待续)

简介:
国庆闲来没事把NavMesh巩固一下。以Unity3D引擎为例写一个底层c# NavMesh寻路。由于Unity3D中本身自带的NavMesh寻路不能非常好的融入到游戏项目其中,所以重写一个NavMesh寻路是个必经之路。

NavMesh在非常多游戏中应用广泛。不同种类的框架下NavMesh寻路发挥的淋漓尽致。与传统的A星寻路相比,NavMesh不仅降低了内存空间占有量。加快了寻路速度,还能够增加寻路角色的宽高限制,以及动态物体寻路等功能。基本上适应了大部分项目变化多端的需求。

我把写NavMesh的过程分成好几个部分,一一进行描写叙述:

一.首先要理解NavMesh核心算法。

NavMesh的核心算法就是用三角形取代传统寻路的方格,用计算拐点优化寻路路径来取代合并路径直线。

例如以下图1NavMesh寻路:

2303121

以及例如以下图2传统的A星寻路:

20131006173445

看到两者的区别了吧,NavMesh已三角形为寻路块,而传统的A星则以方格为寻路块。

二.NavMesh寻路中的路径优化之拐点计算。

事实上NavMesh中比較经常使用的是光照耀线法,但这里不做具体介绍,光照耀浅法具体内容地址:http://www.cnblogs.com/neoragex2002/archive/2007/09/09/887556.html

拐点计算优化路径就是到达目的地须要经过的一堆三角形中计算出最简洁的移动方式。其核心算法就是从当前点到还有一个三角形中的点之间的线段。与这条线段相交的线段所有是路径所穿越的线段,就是拐点,把所有的拐点找出来,并得到一条最长的拐点,那个拐点就是最佳的拐点位置。

三.NavMesh类设计具体解释(这里仅仅设计2D的寻路,对于3D方向的寻路,事实上是能够2D寻路取代的):

1.全部类都在同一的命名空间NavMesh内 namespace NavMesh

Triangle 三角形基础类

NavTriangle 寻路三角形类 (继承Triangle)

Line2D 线段类

Polygon 多边形类

Seeker 寻路主算法类

源码: http://www.luzexi.com/wp-content/uploads/2013/10/NavMeshScript.zip

—————————————– (未完待续) ————————————




本文转自mfrbuaa博客园博客,原文链接http://www.cnblogs.com/mfrbuaa/p/5388425.html,如需转载请自行联系原作者

相关文章
|
6天前
|
算法 定位技术 图形学
unity3d寻路算法
unity3d寻路算法
|
人工智能 机器人 图形学
Unity NavMesh & LineRenderer AI寻路及导航路径的绘制
Unity NavMesh & LineRenderer AI寻路及导航路径的绘制
379 1
Unity NavMesh & LineRenderer AI寻路及导航路径的绘制
|
编解码 定位技术 图形学
Unity 之 手把手教你实现自己Unity2D游戏寻路逻辑
还在看别人的寻路逻辑?保姆级教程,一步步教你实现网格寻路逻辑。
658 0
Unity 之 手把手教你实现自己Unity2D游戏寻路逻辑
|
图形学
Unity导航 (寻路系统Nav Mesh Agent)
第一种 简单寻路 地面接触到的。到达目标点不用跳跃能够一直走路到达。 场景视图中简单搭设几个物体。 胶囊体为寻路者,黄球为目标点 红地板,绿色障碍物。 现将地板以及障碍物选中 在检视面板设置静态为Navigation Static 如图2 然后菜单栏选择窗口 Window –Navigation 然后选择All—Bake烘焙如图 有三个页面参数可以调节烘焙效果,参数具体参照圣典解释。
1859 0
|
前端开发 图形学
Unity3d架构之-Unity MVC框架 StrangeIoC
Strange是一个unity3d中用于控制反转的第三方框架,控制反转(IOC-Inversion of Control)思想是类间解耦的一个重要方法,对于我来说,任何解耦技术都值得去学习。什么是IOC?这里有详细解答。
2804 0
|
算法 定位技术 图形学
UNITY地图寻路及服务器解决方案
多边形寻路算法简单介绍 http://liweizhaolili.lofter.com/post/1cc70144_86a939e   UNITY3D MMO服务器寻路 http://www.pathengine.
|
图形学
unity自带寻路Navmesh入门教程
http://liweizhaolili.blog.163.com/blog/static/16230744201271161310135/ http://liweizhaolili.blog.163.com/blog/static/16230744201271210237616/
|
11天前
|
API 数据库 开发者
构建高效可靠的微服务架构:后端开发的新范式
【4月更文挑战第8天】 随着现代软件开发的复杂性日益增加,传统的单体应用架构面临着可扩展性、维护性和敏捷性的挑战。为了解决这些问题,微服务架构应运而生,并迅速成为后端开发领域的一股清流。本文将深入探讨微服务架构的设计原则、实施策略及其带来的优势与挑战,为后端开发者提供一种全新视角,以实现更加灵活、高效和稳定的系统构建。
18 0
|
9天前
|
Kubernetes 安全 Java
构建高效微服务架构:从理论到实践
【4月更文挑战第9天】 在当今快速迭代与竞争激烈的软件市场中,微服务架构以其灵活性、可扩展性及容错性,成为众多企业转型的首选。本文将深入探讨如何从零开始构建一个高效的微服务系统,覆盖从概念理解、设计原则、技术选型到部署维护的各个阶段。通过实际案例分析与最佳实践分享,旨在为后端工程师提供一套全面的微服务构建指南,帮助读者在面对复杂系统设计时能够做出明智的决策,并提升系统的可靠性与维护效率。
|
20天前
|
存储 监控 Kubernetes
探索微服务架构下的系统监控策略
在当今软件开发领域,微服务架构因其灵活性、可扩展性和容错性而日益受到青睐。然而,这种架构的复杂性也为系统监控带来了新的挑战。本文旨在探讨在微服务环境下实现有效系统监控的策略,以及如何利用这些策略来确保系统的健壮性和性能。我们将从监控的关键指标入手,讨论分布式追踪的重要性,并分析不同的监控工具和技术如何协同工作以提供全面的系统视图。