简易AI寻路库

时间:2013-03-11 17:22:36

标签: actionscript-3 actionscript

我已经与Game Maker一起编写游戏,但希望使用ActionScript 3编写Flash游戏。

在Game Maker中,让一个角色实例寻找最接近的敌人,转向并朝着它移动是很简单的 - 游戏引擎会处理这些难题。

我在业余时间进行游戏开发以获得乐趣,并且不希望成为A *寻路算法的专家。我只想要这样的东西:

mob.MoveToClosestEnemy();

我要求的太多了,还是有图书馆提供这样的东西?

2 个答案:

答案 0 :(得分:1)

没有内置的AS3库可以处理路径查找的各个方面,因此您可以选择通过谷歌查找第三方库并使用它或编写自己的A *算法。

如果你想自己编写,这是一个非常好的路径寻找介绍,带有一个很好的动画示例: http://www.emanueleferonato.com/2012/11/26/the-basics-of-pathfinding-animated-example/

注意:这不是一项简单的技术,你需要使用AS3的相关经验才能完全理解它。

答案 1 :(得分:-2)

我写了Daedalus Lib,一个基于delaunay三角测量的完整的开源AS3寻路库。您可以轻松构建环境(甚至使用位图),请求对其进行寻路,采样路径......这是完全动态,准确和快速的。

你可以在这里看到演示: http://totologic.blogspot.fr/2013/12/introducing-daedalus-lib_19.html

下载资源和维基: https://code.google.com/p/daedalus-lib/

享受!

编辑后:

第一件事。虽然Game Maker是一个专用于一项任务(制作游戏)的工具,但Flash是一种更为通用的平台;你可以开发游戏,也可以开发应用程序。

这意味着在Flash中有两种选择:

1 - 你选择了一个完整的游戏引擎库,它将实现显示,物理,控制......(也许是寻路)。存在这样的库(Flixel,Flashpunk ......),您只需要检查它们的功能并选择更适合您的需求。

2:你建立自己的游戏引擎。它并不意味着你必须从头开始编写所有代码。您可以使用许多专用于单个任务的库,例如用于2D显示的Starling,用于3D显示的Away3D,用于物理的Box2D ......这更难,因为您必须了解库中的基本概念并具有游戏架构的经验,但这种方法更强大,更灵活。

因此,Daedalus Lib致力于为第二种方法工作的人们。它被设计成您自己的游戏引擎的一个组件;例如,你可以将它与Box2D和Starling结合起来。

从那开始,我设计的Daedalus易于使用,同时保持灵活性。

例如,您可以通过使用位图将您的关卡设计注入Daedalus Lib,如下所示:

var myLevel:DDLSMesh;
myLevel = DDLSBitmapMeshFactory.buildFromBmpData(myBitmap.bitmapData);

然后定义一个将扮演你的暴徒角色的实体:

var myMob:DDLSEntityAI = new DDLSEntityAI();
myMob.radius = 5;
myMob.x = 132; // current x
myMob.y = 224; // current y

最后在你的关卡中寻找你的暴徒的路径:

var path:Vector.<Number> = new Vector.<Number>();
var myPathfinder:DDLSPathFinder = new DDLSPathFinder();
myPathfinder.entity = myMob;
myPathfinder.mesh = myLevel;
myPathfinder.findPath(yourGoalX, yourGoalY, path);

之后,您的变量 path 将包含生成路径的坐标,以便您的暴徒达到目标,避免与您在位图中定义的级别发生冲突。 由您自己直接在MovieClip上通过enterFrame使用这些坐标使您的怪物在屏幕上移动,或者使用它来改变物理模拟中身体的速度。