-- / --
--
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

10 / 30
Wed

仲間キャラがプレイヤーの方に近づいてくる処理について考えてました。 一番簡単なのは、 プレイヤーがその仲間キャラの右にいれば右に移動する、 みたいにする処理ですが、 これでは途中に壁があった場合困ります。 壁を回り込めばいいものを、 壁に向かってどうしようもできなくなる見方キャラとか、 何か嫌ですよね。 ということで、 うまく壁を回り込みつつ、 最短距離でプレイヤーに近づく経路を導き出すような、 良いアルゴリズムがないか探してみたところ、 「A* アルゴリズム」 というものを見つけました。

さっそく Kotlin で実装、 完成しました。

647_製作過程A

自分で作っておいて感動しました。 画像の黄色い四角が表示されてるところが、 A* アルゴリズムで導き出した最短距離です。

さて、 できたのは良いんですが、 問題点があります。 鋭い方ならもう気づいているかもしれませんが、 画像の左上をご覧ください。 FPS が 25 くらいになってます。 つまり、 この処理、 重いんです。 毎フレームこの処理を行うと、 1 つの最短経路を計算するだけで、 これだけ FPS が落ちてしまいます。

A* は処理量が多いのがデメリットと言われているみたいですが、 実装してみるとその通りでした。 うまく最適化するのが今後の目標になりそうです。

スポンサーサイト

comment ×0
コメント
管理者にだけ表示を許可する
 
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。