見出し画像

ベルトスクロールアクションの敵のAI

ベルトスクロールアクションを現在作成中です。

実際に作ってみて、敵がプレイヤーの後ろに回り込むAIのアルゴリズムが何となくわかったので、作り方を紹介します。

■通常の接近するAI

まず敵が1体の場合は、普通に近づきます。

取りうる攻撃によっては有利な間合いがある(例えば飛び道具を使えるなどの)場合は、適度に間合いを取った方が良いかもしれません。

一般的なベルトアクションでは、直線上にプレイヤーに近づくのではなく、距離を取りつつ近づくAIが多いです。

■プレイヤーの後ろに回り込むAI

敵が2体以上いる場合は、1体は普通に接近して、もう1体は後ろに回り込む、ということをするとプレイヤーの対処が難しくなり、立ち回りを考える面白さが生まれます。

回り込みAIの手順に関しての概要は以下の通りです。

ルールとしては、以下の通りです。
1. 2人以上の敵がいる場合、プレイヤーと同じZ値にならないところまで移動する。そして直進する
2. プレイヤーの後ろに回り込んだら、通常の接近AIで近づく

さらに処理を細分化すると、
1. プレイヤーの後ろに敵がいるかどうかチェック
2. 回り込みを行う敵を決定する
3. 敵のZ値をずらす
4. 直進してプレイヤーの後ろまで移動する
となります。

▼1. プレイヤーの後ろに敵がいるかどうかチェック

この判定は、プレイヤーの左側にいる敵の数と、右側にいる敵の数をカウントすることで可能となります。

▼2. 回り込みを行う敵を決定する

次に、回り込みを行う敵の決定です。
プレイヤーからの距離を計算して、「一番遠い敵」を回り込みする敵とします。

▼3. 敵のZ値をずらす

回り込みするには、上下に移動してプレイヤーの攻撃が当たらない場所まで移動する必要があります。

プレイヤーが下の方(Z軸手前)にいたら上の方(Z軸の奥)、上にいたら下に移動する、というルーチンで行えば大抵は問題ないはずです。

▼4. 直進してプレイヤーの後ろまで移動する

最後に直進移動です。単純にプレイヤーの後ろへたどり着くまで直進すると、プレイヤーが壁を背にしていた場合に、直進し続けてしまうので、一定フレームで直進処理を打ち切った方が良いです。

■AIの状態遷移

これまでの処理を状態遷移にまとめてみます。

細かい計算や判定はありますが、おおよそこのような遷移である程度は、うまく回り込むことができると思います。

以上、回り込みのAIでした。

◾️関連する記事

ベルトスクロールアクションについて、基本的なシステムの実装方法をまとめています。

ベルトアクションは、どのような面白さの構造を持っているのかを考察してみました。
また、どんなことに気をつけて作る必要があるのか、ということも書いています。


この記事が気に入ったらサポートをしてみませんか?