我用 Game Maker 编写了游戏,但希望使用 ActionScript 3 编写 Flash 游戏。
在 Game Maker 中,让角色实例寻找最近的敌人、转身并朝它移动很简单——游戏引擎负责处理困难的事情。
我在业余时间做游戏开发只是为了好玩,并不想成为 A* 寻路算法方面的专家。我只想要类似的东西:
mob.MoveToClosestEnemy();
我要求太多还是有图书馆提供这样的东西?
我用 Game Maker 编写了游戏,但希望使用 ActionScript 3 编写 Flash 游戏。
在 Game Maker 中,让角色实例寻找最近的敌人、转身并朝它移动很简单——游戏引擎负责处理困难的事情。
我在业余时间做游戏开发只是为了好玩,并不想成为 A* 寻路算法方面的专家。我只想要类似的东西:
mob.MoveToClosestEnemy();
我要求太多还是有图书馆提供这样的东西?
没有内置的 AS3 库可以处理寻路的各个方面,因此您的选择是通过 google 查找第 3 方库并使用它或编写您自己的 A* 算法。
如果你想自己写,这是一个很好的关于寻路的介绍,带有一个很棒的动画示例: http ://www.emanueleferonato.com/2012/11/26/the-basics-of-pathfinding-animated-example/
注意:这不是一个简单的技术,您需要使用 AS3 的相关经验才能完全理解它。
我编写了 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 上使用这些坐标来使您的生物在屏幕上移动,或者使用它来改变物理模拟中身体的速度。