ローグライクゲームの作り方4 敵に視野を持たせてプレイヤーを追いかけるようにする

Unity ローグライクゲームの作り方


Unity入門の森オリジナル本格ゲーム制作講座はこちら
5種類の本格ゲームの全ソースコード公開・画像&動画による解説付き

前回の記事では敵をマップに配置し移動できるようにしました。

さらに、プレイヤーと敵ターンの概念を導入し、お互いが交互に動けるようにC#スクリプトを作成しました。

前回の記事:

ローグライクゲームの作り方3 敵を出現させターン制ダンジョンゲームの基本システムを作る
前回の記事ではローグライクのプレイヤーキャラクターを作成し、マップ上で自由に移動できるようにしました。 前回の記事: 今回の記事では敵オブジェクトを作成し、プレイヤーと同じようにマップ上に登場させてみましょう! 敵オブジェクト用の...

今回の記事では、敵がプレイヤーを見つけたら追いかけてくるように経路探索アルゴリズムを実装してみましょう!

経路探索アルゴリズムには色々な方法が存在していますが、ここでは単純に敵キャラクターに視野を持たせてその範囲にプレイヤーがいたらそちらへ移動するという比較的簡単な方法を採用しています。


【Line登録者限定のプレゼントもあるよ!】

経路探索のアルゴリズムを作成する

それでは敵が早速プレイヤーを追いかける処理を作っていきましょう!

経路探索の処理は「Enemy」コンポーネントに実装していきます。

コンパイルに成功したら、再生して実際にプレイヤーの方に向かってくるか確認してください。

上のコードでは視野を表す「VisibleArea」フィールドの中にプレイヤーがいたら追いかけ始めるようになっています。(追いかける状態だと「IsChasing」フィールドがtrueになります。)

「VisibleArea」フィールドの内容を変更すると敵の視野が変わるので、適当に変更してみるのもいいでしょう。

また、「IsChasing」フィールドがtrueになった時にプレイヤーが視野の範囲外に行ってしまった時は現在の前方向からの左右を確認し、その中にプレイヤーがいるか判定するようにしています。

この処理は追跡処理をより良くするためのものになりますが、なくても大丈夫です。

興味がある方は左右確認の処理をコメントアウトしてみて動作を確認するのもいいでしょう。

上の画像ではマップデータはこうなっています。

まとめ

今回の記事ではプレイヤーを追いかけてくる敵のスクリプト処理を追加しました。

今回の記事で実装したものは敵の前方向にプレイヤーが存在しているか確認し、存在していたらその方向へ移動するものになります。

ある程度それっぽくはなりますが、マップの状態によっては完全にプレイヤーを追いかけることができなくなるかもしれませんよね。改良の余地はまだまだあります。

記事では改良の一環としてプレイヤーが見えなくなったら左右を確認する工夫を取り込んでいますが、それでも追いかけきれないパターンが発生するかもしれません。

ぜひ余力があれば改造・改良にも挑戦してみてください。

プレイヤーを絶対に追いかけるようにするには経路探索アルゴリズムで調べると色々な方法が既に先人たちによって考案されているので、そういったアルゴリズムを実装するのもいいでしょう。

また、この記事で追加した「Enemy.Scope」クラスは視野以外にも攻撃範囲などにも利用できるので、テクニックとして身に着けておくといいかもしれないです。

それでは次の記事に行ってみましょう。

ローグライクゲームの作り方5 パラメータの実装とターン制戦闘システムを開発する
前回までの記事で敵の移動AIをUnityとC#でローグライクRPGに組み込んでいきました。 前回の記事: 今回の記事ではプレイヤーと敵がぶつかった時に戦闘するようにしていきましょう! まずは戦闘に必要なプレイヤーのステータスパラメ...

Unity ローグライクゲームの作り方講座へ>>



Unity入門の森オリジナル本格ゲーム制作講座はこちら
5種類の本格ゲームの全ソースコード公開・画像&動画による解説付き


【Line登録者限定のプレゼントもあるよ!】

コメント

タイトルとURLをコピーしました