-1

我用 Game Maker 编写了游戏,但希望使用 ActionScript 3 编写 Flash 游戏。

在 Game Maker 中,让角色实例寻找最近的敌人、转身并朝它移动很简单——游戏引擎负责处理困难的事情。

我在业余时间做游戏开发只是为了好玩,并不想成为 A* 寻路算法方面的专家。我只想要类似的东西:

mob.MoveToClosestEnemy();

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

4

2 回答 2

1

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

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

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

于 2013-03-11T17:29:23.663 回答
0

我编写了 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 中,您有 2 个选择:

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);

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

于 2015-02-12T03:13:02.157 回答