-1

Game Maker でゲームを作成したことがありますが、ActionScript 3 を使用して Flash ゲームを作成したいと考えています。

Game Maker では、キャラクター インスタンスが最も近い敵を探し、向きを変え、そこに向かって移動するのは簡単でした。難しいことはゲーム エンジンが処理しました。

私は余暇にゲーム開発を楽しんでおり、A* パスファインディング アルゴリズムの専門家になりたいとは思っていません。次のようなものが欲しいだけです:

mob.MoveToClosestEnemy();

私はあまりにも多くを求めていますか、それともそのようなものを提供するライブラリはありますか?

4

2 に答える 2

1

パス検索のすべての側面を処理する AS3 ライブラリは組み込まれていないため、Google 経由でサードパーティのライブラリを探してそれを使用するか、独自の A* アルゴリズムを作成するかを選択できます。

独自に記述したい場合、これは優れたアニメーションの例を使用したパスファインディングの非常に優れた紹介です: http://www.emanueleferonato.com/2012/11/26/the-basics-of-pathfinding-animated-example/

注: これは単純な手法ではありません。すべてを完全に理解するには、AS3 を使用した相対的な経験が必要です。

于 2013-03-11T17:29:23.663 に答える
0

私は、ドローネー三角形分割に基づく完全なオープンソース AS3 パスファインディング ライブラリである Daedalus Lib を作成しました。環境を簡単に構築するためのすべて (ビットマップの使用も含む)、その上でのパス検索のリクエスト、パスのサンプル... 完全に動的で、正確で高速です。

ここでデモを見ることができます: http://totologic.blogspot.fr/2013/12/introducing-daedalus-lib_19.html

ソースとウィキをダウンロード: https://code.google.com/p/daedalus-lib/

楽しみ!

編集後:

初めにすること。Game Maker は 1 つのタスク (ゲームの作成) に特化したオールインワン ツールですが、Flash はより一般的なプラットフォームです。ゲームだけでなくアプリケーションも開発できます。

これは、Flash よりも 2 つの選択肢があることを意味します。

1 - 表示、物理演算、制御を実装する完全なゲーム エンジン ライブラリを選択します。そのようなライブラリ (Flixel、Flashpunk...) が存在します。それらの機能を確認し、必要に応じてより適切なものを選択するだけです。

2: 独自のゲーム エンジンを構築します。すべてをゼロからコーディングする必要があるという意味ではありません。2D 表示用の Starling、3D 表示用の Away3D、物理演算用の Box2D など、単一のタスク専用の多くのライブラリを使用して作成できます。ライブラリの基本的な概念を本当に理解し、ゲーム アーキテクチャの経験が必要なため、より困難です。 、しかしそのアプローチはより強力で柔軟です。

そのため、Daedalus Lib は、2 番目のアプローチで作業する人々に特化しています。これは、独自のゲーム エンジンのコンポーネントとして設計されています。たとえば、Box2D や Starling と組み合わせることができます。

そこから始めて、柔軟性を保ちながら使いやすいように Daedalus を設計しました。

たとえば、次のように、ビットマップを使用するだけでレベル デザインを Daedalus Lib に挿入できます。

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

次に、Mob の役割を果たすエンティティを定義します。

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

最後に、レベル内で Mob のパスを尋ねます。

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 に答える