博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Unity3D架构设计NavMesh寻路(未完待续)
阅读量:6848 次
发布时间:2019-06-26

本文共 840 字,大约阅读时间需要 2 分钟。

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

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

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

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

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

例如以下图1NavMesh寻路:

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

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

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

事实上NavMesh中比較经常使用的是光照耀线法,但这里不做具体介绍,光照耀浅法具体内容地址:

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

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

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

Triangle 三角形基础类

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

Line2D 线段类

Polygon 多边形类

Seeker 寻路主算法类

源码:

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

转载地址:http://yroul.baihongyu.com/

你可能感兴趣的文章
【ZZ】超全面的设计模式总结
查看>>
连续特征离散化和归一化
查看>>
CCF NOI1040 除法游戏
查看>>
如何使用Git上传项目代码到github
查看>>
HDU1312 ZOJ2165 Red and Black
查看>>
测试人员面试不自信怎么办?
查看>>
第一次实验报告
查看>>
正则匹配replace替换重复字符串
查看>>
[Linux学习]chattr配置文件隐藏属性及lsattr查看隐藏属性
查看>>
mybatis大数据提交和更新,数据SQL语句批量提交数据库
查看>>
每天一个小算法(Shell Sort2)
查看>>
Java数据结构与算法(7) - ch05双向链表(Double List)
查看>>
fiddler 教程
查看>>
net中捕获摄像头视频的方式及对比
查看>>
国资委将规范国有企业收入分配机制
查看>>
RabbitMQ 消息确认机制
查看>>
NSValue&NSNumber
查看>>
201621123075 Week03-面向对象入门
查看>>
直线相交 模板 大全
查看>>
python request
查看>>