`

如何在MONO 3D寻找最短路路径

阅读更多

前段时间有个客户说他们想在我们的3D的机房中找从A点到B点的最短路径,然而在2D中确实有很多成熟的寻路算法,其中A*是最为常见的,而这个Demo也是用的A*算法,以下计算的是从左上角到右下角的最短路径:
左上
具体的实现方式是,先将地板进行了分割,分成一个数组,然后再计算该点上是否有3D的对象,若是有,就置成该点不能通过的标记,否则就表示该点可以通过(如果你分割的越细那么算的就越精确,但是算的当然也就慢一些,关键看你的要求),以下是分割地板的代码:

1 var size = {x: 100, y: 100}; // 100*100
2 var topLeft = {x: 228, y: 53};
3 var width = 524;
4 var height = 400;
5 var dw = width / size.x;
6 var dh = height / size.y;
7 var start;
8 var end;
9 var graph;
10 function to2d() {
11     var nodes = [];
12     for (var i = 0; i < size.x; i++) {
13         var nodeRow = [];
14         var x = topLeft.x + dw * i
15         for (var j = 0; j < size.y; j++) {
16             var y = topLeft.y + dh * j;
17             if (isHasObj(x, y)) { //判断该点上是否有物体
18                 nodeRow.push(0);
19             else {
20                 nodeRow.push(1);
21             }
22         }
23         nodes.push(nodeRow);
24     }
25     graph = new Graph(nodes, {
26         closest: null,
27         diagonal: false
28     });
29  
30     //这里是找一条从(0,0)到(79,80)的路径。
31     start = graph.grid[0][0];
32     drawPath(7980);
33 }

分享到:
评论

相关推荐

    unity3d读取xml插件Mono.Xml

    在Unity3D中,处理数据是至关重要的,XML(可扩展标记语言)是一种常见的数据存储和交换格式,因其结构清晰、易于理解和解析而受到青睐。本篇将详细介绍Unity3D中使用Mono.Xml库来读取XML文件的相关知识点。 首先,...

    Unity3D中Mono.Xml和XmlParser的使用

    本教程将深入探讨如何在Unity3D中利用 Mono.Xml 和 XmlParser 类库来解析和操作XML文件。 Mono.Xml 是Mono框架的一部分,它提供了对XML文档的一系列处理工具,包括解析、创建和操作XML节点。这个库包含了...

    Mono环境winform开发

    Mono环境下的WinForm开发是一种跨平台的技术,它允许开发者使用C#语言和.NET框架构建的Windows应用程序在非Windows系统上运行,比如Linux。这个技术基于Mono项目,一个开源的.NET实现,旨在提供与Microsoft .NET ...

    mono+sqlite

    综上所述,这个压缩包包含的文件是用于在Mono(以及在Unity3D中)环境下开发和运行C#程序时,与SQLite数据库进行交互所必需的组件。开发者可以使用这些DLL来创建和操作SQLite数据库,实现游戏或者应用的数据存储功能...

    Mono-Design.7z

    4. **动画和动态模拟**:Mono Design或许支持3D对象的动画制作,允许用户创建交互式的产品演示或运动路径模拟。 5. **协作功能**:为了团队合作,该软件可能集成了版本控制和共享选项,让设计师们可以协同工作,...

    Reactor教程Mono和Flux例子

    在Java生态系统中,Reactor是实现 Reactive Streams 规范的一个关键工具,它提供了Mono和Flux两种核心类型来处理单个值和多个值序列。 Mono代表0个或1个值的发布者,它可以用于处理那些不一定会发生或者只产生一个...

    Practical Mono(PDF扫描版)

    此外,你还将了解到如何利用Mono进行游戏开发,例如使用Unity3D游戏引擎,Unity支持C#脚本并依赖于Mono的运行时。 总的来说,《Practical Mono》是一本全面介绍Mono技术的指南,它不仅适合.NET开发者拓宽视野,也...

    dotnet程序可否跨平台检测工具MONO-Moma

    标题中的“dotnet程序可否跨平台检测工具MONO-Moma”揭示了本文将要讨论的是.NET Framework应用程序在非Windows操作系统上运行的可能性,以及如何利用MONO-Moma工具进行兼容性检测。MONO-Moma(Mono Migration ...

    Mono6.4.0(MAC)

    此指南针对MacOS,没有更改安装路径操作方法(文件太大故此放到百度网盘中,如被和谐,可邮箱联系我) 检查是否安装成功 /Library/Frameworks/Mono.framework/Versions/版本号/bin/mozroots --import —sync 打开....

    【Dnspy】Unity-debugging相关mono补丁

    【Dnspy】Unity-debugging相关mono补丁 在Unity引擎的开发过程中,调试是必不可少的一个环节。...在实际使用中,结合对Unity和Mono的深入理解,可以解决许多棘手的编程问题,实现更高效、更稳定的游戏开发。

    mono-design-v2.1.3

    在设计领域,3D建模通常需要专业软件和复杂的技术,但Mono Design降低了这个门槛。其直观的Editor界面使得初学者能够迅速上手,通过拖拽、设置参数等方式,轻松搭建起复杂的3D环境。这对于数据中心规划、设备布局...

    CentOS配置MONO运行环境

    这时,我们可以借助MONO项目来在Linux上运行.NET应用。本教程将详细介绍如何在CentOS 6.4上配置和安装MONO运行环境。 首先,开始配置MONO环境前,确保系统是最新的。执行`yum update`来更新所有已安装的软件包和...

    Windows下Apache配置Mono

    在Windows操作系统中配置Apache服务器以运行Mono是一个常见的需求,这主要适用于那些希望在Windows环境下使用ASP.NET或其他.NET框架应用程序的开发者。Apache与Mono的结合可以让用户在非Microsoft环境中运行.NET应用...

    docker的mono镜像

    在docker的mono镜像中加入一些基本命令包,方便开发(公司内网有些不能下)。有需求的直接下载,同时不需要再到仓库龟速下载了。送上安装命令: docker load -i mono.tar

    Xamarin Mono For Android

    【Xamarin Mono for Android】是Xamarin公司提供的一款开发工具,它允许开发者使用C#...通过遵循上述步骤,开发者可以在Windows环境下搭建起一个完整的Xamarin Mono for Android开发环境,从而开始创建Android应用。

    MONO 开发手册

    5. **跨平台兼容性**:讨论在不同操作系统上运行.NET应用时可能遇到的问题及解决策略,包括文件路径、线程同步、GUI平台差异等。 6. **ASP.NET与MONO**:介绍如何在MONO环境中开发和部署ASP.NET Web应用程序,以及...

    mono下载安装过程实录以及模块分析

    在安装 Mono 之前,作者首先介绍了 Mono 的概念和特点,指出 Mono 是一个开源的、跨平台的.NET Framework 实现,能够使.NET 程序在 Linux 下运行。然后,作者详细记录了安装 Mono 的过程,包括使用 wget 命令下载 ...

    mono初级级入门.rar

    Mono是一个开源的.NET框架,它实现了微软的.NET Framework的大部分功能,使得.NET应用程序可以在Linux、macOS以及其他非Windows操作系统上运行。这个“mono初级级入门.rar”压缩包显然是为初学者设计的,旨在引导...

    Mono3D:“单目视频单声道化”的源代码(SIGGRAPH Asia 2020)

    [] [ ] [] Mono3D是将双目视频单声道化为具有隐式编码的立体声信息的常规单眼视频的实现,从而可以高质量地恢复原始的双目视频。在线演示 环境请参考 。数据集由于版权问题,我们无法发布整个3D电影数据集。 但是...

Global site tag (gtag.js) - Google Analytics