こんにちは、17のmds_boyです。
現在制作中のSkyHighFightというゲームで敵(CPU)の動きを実装したので、それについて書いてみようと思います。
その前にSkyHighFightについて簡単に紹介すると、空中を飛びながら戦う四人対戦のアクションゲームで、場外に出たり体力が無くなってやられないようにするゲームです。Unityで作っています。
(↓のgifを見た方が早いかも)
発端
今まではプレイヤー2~4人で遊んでいたのですが、1人でも遊べるようにしたいということで敵(CPU)を実装することになりました。
色々あって時間があんまり取れなかったので、楽な実装でそれっぽく動くことを目指しました。
できたものはこんな感じです↓
色々と怪しいですが、まあ一応は戦えている気がします。
実装の過程
まず死ににくいように
出現させるところまではあらかじめできていました。
が、動かないとそのまま落下して死んでしまいます。
というわけで、まずは高度が低くなったときにランダムでジャンプしたり上昇するようにしました。自然死は減りました。
それと、ゲームの性質上攻撃を食らって端っこに行くと不利なので、端にいるときは中央付近に戻ってくるようにしました。
これで良い感じのサンドバッグができました。
それっぽい動きにする
端にいるとき以外動かないのはどうなの?ということでランダムで左右に動くようにしました。
このとき、動くか動かないかでランダムにするとちょこちょこ動きになってしまうので、ランダムで動く状態にして、一度そうしたら動き続け、ランダムで動く状態から通常の状態に戻すみたいな感じでやりました。
(場外に行きそうなときは戻します)
ジャンプ・上昇も上がりすぎない程度にランダムでするようにしました。
これでちょっと生きてる感じがするようになります。
攻撃
次に攻撃です。
SkyHighFightには攻撃が通常攻撃と強攻撃が四方向あります。
本当は連続攻撃とかあるんですが今回はそこまでやってません。あくまでそれっぽくなので。
まず他のプレイヤーの座標を持っておきます。
それで適当なプレイヤーを攻撃しにいくようにしようかな~と最初は考えたんですが、横はともかく高さを合わせるのちょっと難しくない?ということで、とりあえず距離が近いプレイヤーに攻撃することにしました。
距離が近いプレイヤーがいたら、自分の位置からみた他のプレイヤーの方向に合わせた攻撃をするような感じで実装しました。
キャラクターはFalcoとMagieの二人がいるんですが、Magieの強攻撃は遠距離主体なので取る距離を二倍くらいにしてます。
結果
ここまででちょっと試してみたのが上のgifです。
軽めの実装で割とちゃんと動いたので良かったねとなりました。
もっとちゃんと動くようにするのは大変そうですが…
おしまい