探索アルゴリズムを実装して敵がストーカーしてくるようになったよ!
概要
1.Aスターアルゴリズム
2.自分のゲームに組み込む
3.今後の予定
Aスターアルゴリズム
上の画像のようなことをやりたいので、アルゴリズムを実装しました。
探索アルゴリズムの調整も行い、斜め移動時に壁をすり抜けないようにしました。
青は敵の探索マス。
グレーは探索終了マス。
白は壁マス。
赤はプレイヤーマス。黒は最短経路マスとします。
設計
前回も記述しましたが、以下の記事を参考にさせていただきました。
この記事の考え方をベースに設計したら動きましたので、ありがとうございました。
よくわかるA*(A-star)アルゴリズム (Unity2Dのサンプルコードつき)
めんどくさくて最初こんな顔してました。
主にこのアルゴリズムの使うと、目的地からスタート地点からの経路を取得できるようになります。また、内部でそれぞれ1マス前のノードもポインタとして参照してます。
親ノードポインタを再帰的にたどると、スタートノードまでたどりつきます。
つまり、スタートからゴールまでの経路をポインタを持っているのが、わかるんですね。
まとめると、スタートノードの一個先のノードを取れば敵が移動できる場所を取得できることになりますね。
自分のゲームに組み込む
Aスターアルゴリズムを使うと、敵がプレイヤーをストーカーして追いかけてきます。
動画でもわかる通り、検証したものがきちんと動くと感動しますね。
複数いたときの敵の挙動がおかしいのでまだ調整する必要がありますが、ブラッシュアップします。それと、CPUの負荷がやばいので最適化も考えます。。。
今後の予定
複数の敵がいたときの挙動がおかしいので、修正します。そして、最適化。。。泣
最短経路アルゴリズムが落ち着いたらマップの自動生成周りを作り、プロトの1ステージが作れたら良い温度感ですね。
システム周りばかりやってるので、絵作りの方も気分展開でやりたいです。。
では、またお会いしましょう!