原文地址:http://t-machine.org/index.php/2014/08/10/debugging-a-pathfinding-in-unity/
说明:在文章中有时出现A星有时出现A*,都是一个东西,要是不理解,可以先看看原作者推荐的那几篇文章……
正文:
我的项目需要一个快速、高效、强大和适应性强的寻路系统。我的角色要飞、走、爬、瞬移穿过一个程序生成的陆地。完成这个要求有些复杂,但是过程却很有趣。
我想要一个模块,它能智能的引导障碍周围的怪物,并选择比较容易走的路,而不是从悬崖边走过去(反之亦然,比如巨型蜘蛛)。就像这样:
Unity Asset Store
Unity里要做任何事,访问Asset Store都应该是第一步。
我搜索排名靠前的几个寻路资源包,并且测试了有webPlayer或者免费版本的demo。
其中有些挺好,但是总的来说让人失望。性能不错,其中大部分都用了协程或者后台线程来控制CPU的使用,这很不错!(相对容易自己实现,话说这是A*的两大特性之一)
……但是用户接口很糟糕(我理解不了……)或者代码很难写,或者丢失了A星的核心元素的设置(比如动态边界dynamic edge:在游戏里使用A*的另一个原因)。
如果只是简单用用,它们很多都不错。24小时热卖资源里有一个看起来很好,由一个大团队维护——但是他们很精明(只能在你购买后才能看到文档!)而且看上去代码相对难写。
最后,我放弃了,于是我想:
(A*不难实现,有很多选择方式,也许在这件事上重复造轮子是一件好事)。
A星是什么,如何工作?如何实现?
我推荐以下几篇文章: