Unityに関連する記事です

敵の行動と索敵範囲をリンクさせる

 敵の行動と索敵範囲について実装をしてきました。ですがまだこのままでは「索敵範囲内のPlayerに対して攻撃行動を行う」といったロジックは組めていません。
何故ならば、実装した行動と索敵範囲とがリンクしていないため、それぞれがバラバラの動きになっているためです。

 本来の設計は、索敵範囲を基準として敵の行動を決定していました。現在はバラバラですが、それらをつなぎ合わせてあげることで
本来考えていた設計の実装が可能になります。その手順を考えてみましょう。

索敵範囲を基準としたロジックを考える

 敵の行動は、いまの所は「待機」→「移動」→「攻撃」→「待機」のサイクルで動いています。
これを索敵範囲を基準としたサイクルに置き換えていきます。

 移動と攻撃ですが、こちらは、索敵範囲を基準にして、どちらの行動を選択するかを判別させるようにします。
ここでいう索敵範囲とは、敵の視覚情報の範囲であると考えてください。つまり、視認出来ている場合にのみ、プレイヤーを追いかけるというようにしたいですね。
今回はわかりやすく、プレイヤーが敵の索敵範囲外の場合には移動を、索敵範囲内の場合には攻撃を選択できるようにプログラムを考えましょう。
^榮阿砲弔い
 いままでは敵の向いている方向に前進をさせていました。とはいえ、常に前進してしまうとわかってしまうとプレイヤーは敵を脅威と感じません。
かといって、索敵範囲外であったのに、毎回プレイヤーの方向を自動的に向き直すのも、おかしな挙動になります。(プレイヤーが見えていないはずなので)

 つまり「索敵範囲外にプレイヤーがいる場合には、敵は移動をする。移動する場合にはランダムな方向を向いて、その方向に前進させる」というような内容であれば
「敵は、自分の目にプレイヤーが映らない場合には、プレイヤーを探してウロウロしている」という状態を表現できそうです。 
 これを「移動」と定義しましょう。
攻撃について
 索敵範囲内の場合には攻撃を選択するようにしてあげたいのですが、索敵範囲は結構な範囲があります。
つまり、範囲のギリギリにプレイヤーがいてもそれは索敵範囲内ですから発見されたものとなります。そのため
索敵範囲内だからすぐに攻撃、というようにプログラムを組んでしまうと、ものすごくプレイヤーが遠いにも関わらず
その場で攻撃を行ってしまうことになり、これも非常に滑稽かつ、脅威と感じることはないでしょう。

 そのため、「索敵範囲内にプレイヤーがいる場合には、まずプレイヤーの位置まで移動を行って、その後、攻撃を行う」という内容であれば
プレイヤーに対して向かってきてから攻撃する挙動になりますから、敵として申し分ない行動といえるでしょう。

 これらの点を踏まえて、EnemyControlerクラスを修正していきます。

 <= +ボタンを押すと開きますので、自分なりの実装を行った上で確認をしてみましょう。また確認後、不要なDebug.Logはコメントアウトするか削除しましょう。

コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

Menu



プログラムの基礎学習

コード練習

技術/知識(実装例)

2Dおはじきゲーム(発展編)

2D強制横スクロールアクション(発展編)

3Dダイビングアクション(発展編)

2Dタップシューティング(拡張編)

レースゲーム(抜粋)

2D放置ゲーム(発展編)

3D脱出ゲーム(抜粋)

2Dリアルタイムストラテジー

2Dトップビューアドベンチャー(宴アセット使用)

3Dタップアクション(NavMeshAgent 使用)

2Dトップビューアクション(カエルの為に〜、ボコスカウォーズ風)

3Dトップビューアクション(白猫風)

VideoPlayer イベント連動の実装例

VideoPlayer リスト内からムービー再生の実装例(発展)

AR 画像付きオブジェクト生成の実装例

AR リスト内から生成の実装例(発展)

private



このサイト内の作品はユニティちゃんライセンス条項の元に提供されています。

管理人/副管理人のみ編集できます