前段时间有个客户说他们想在我们的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( 79 , 80 );
|
33 |
} |
相关推荐
在Unity3D中,处理数据是至关重要的,XML(可扩展标记语言)是一种常见的数据存储和交换格式,因其结构清晰、易于理解和解析而受到青睐。本篇将详细介绍Unity3D中使用Mono.Xml库来读取XML文件的相关知识点。 首先,...
本教程将深入探讨如何在Unity3D中利用 Mono.Xml 和 XmlParser 类库来解析和操作XML文件。 Mono.Xml 是Mono框架的一部分,它提供了对XML文档的一系列处理工具,包括解析、创建和操作XML节点。这个库包含了...
Mono环境下的WinForm开发是一种跨平台的技术,它允许开发者使用C#语言和.NET框架构建的Windows应用程序在非Windows系统上运行,比如Linux。这个技术基于Mono项目,一个开源的.NET实现,旨在提供与Microsoft .NET ...
综上所述,这个压缩包包含的文件是用于在Mono(以及在Unity3D中)环境下开发和运行C#程序时,与SQLite数据库进行交互所必需的组件。开发者可以使用这些DLL来创建和操作SQLite数据库,实现游戏或者应用的数据存储功能...
4. **动画和动态模拟**:Mono Design或许支持3D对象的动画制作,允许用户创建交互式的产品演示或运动路径模拟。 5. **协作功能**:为了团队合作,该软件可能集成了版本控制和共享选项,让设计师们可以协同工作,...
在IT行业中,MONO是一个开源的.NET框架实现,它允许开发者在多种操作系统上运行.NET应用程序,包括Linux、macOS和Windows。"MONO下访问eDirectory的动态链接库Mono.Security.dll"这一主题聚焦于如何在MONO环境下利用...
在Java生态系统中,Reactor是实现 Reactive Streams 规范的一个关键工具,它提供了Mono和Flux两种核心类型来处理单个值和多个值序列。 Mono代表0个或1个值的发布者,它可以用于处理那些不一定会发生或者只产生一个...
此外,你还将了解到如何利用Mono进行游戏开发,例如使用Unity3D游戏引擎,Unity支持C#脚本并依赖于Mono的运行时。 总的来说,《Practical Mono》是一本全面介绍Mono技术的指南,它不仅适合.NET开发者拓宽视野,也...
标题中的“dotnet程序可否跨平台检测工具MONO-Moma”揭示了本文将要讨论的是.NET Framework应用程序在非Windows操作系统上运行的可能性,以及如何利用MONO-Moma工具进行兼容性检测。MONO-Moma(Mono Migration ...
此指南针对MacOS,没有更改安装路径操作方法(文件太大故此放到百度网盘中,如被和谐,可邮箱联系我) 检查是否安装成功 /Library/Frameworks/Mono.framework/Versions/版本号/bin/mozroots --import —sync 打开....
【Dnspy】Unity-debugging相关mono补丁 在Unity引擎的开发过程中,调试是必不可少的一个环节。...在实际使用中,结合对Unity和Mono的深入理解,可以解决许多棘手的编程问题,实现更高效、更稳定的游戏开发。
在设计领域,3D建模通常需要专业软件和复杂的技术,但Mono Design降低了这个门槛。其直观的Editor界面使得初学者能够迅速上手,通过拖拽、设置参数等方式,轻松搭建起复杂的3D环境。这对于数据中心规划、设备布局...
这时,我们可以借助MONO项目来在Linux上运行.NET应用。本教程将详细介绍如何在CentOS 6.4上配置和安装MONO运行环境。 首先,开始配置MONO环境前,确保系统是最新的。执行`yum update`来更新所有已安装的软件包和...
在docker的mono镜像中加入一些基本命令包,方便开发(公司内网有些不能下)。有需求的直接下载,同时不需要再到仓库龟速下载了。送上安装命令: docker load -i mono.tar
在Windows操作系统中配置Apache服务器以运行Mono是一个常见的需求,这主要适用于那些希望在Windows环境下使用ASP.NET或其他.NET框架应用程序的开发者。Apache与Mono的结合可以让用户在非Microsoft环境中运行.NET应用...
【Xamarin Mono for Android】是Xamarin公司提供的一款开发工具,它允许开发者使用C#...通过遵循上述步骤,开发者可以在Windows环境下搭建起一个完整的Xamarin Mono for Android开发环境,从而开始创建Android应用。
5. **跨平台兼容性**:讨论在不同操作系统上运行.NET应用时可能遇到的问题及解决策略,包括文件路径、线程同步、GUI平台差异等。 6. **ASP.NET与MONO**:介绍如何在MONO环境中开发和部署ASP.NET Web应用程序,以及...
Mono是一个开源的、跨平台的.NET框架,它允许开发者在非Windows系统上,如Linux、macOS或Android等,运行和开发.NET应用程序。这个“mono4.0”开发包是针对版本4.0的更新,提供了对.NET Framework 4.0的兼容性和支持...
在安装 Mono 之前,作者首先介绍了 Mono 的概念和特点,指出 Mono 是一个开源的、跨平台的.NET Framework 实现,能够使.NET 程序在 Linux 下运行。然后,作者详细记录了安装 Mono 的过程,包括使用 wget 命令下载 ...