Unityに関連する記事です

敵に索敵範囲を設定する

 前回の設計の続きから進めていきます。

・敵がプレイヤーに対して攻撃する場合のロジックを設計する。索敵範囲は設定はできるがランダムな値は取らない。 <= ここで扱います

  ‐錣帽況發垢襪里任呂覆ぁ
  ∈敵範囲がある。範囲は設定できる。この範囲はゲーム内では見えない。
  索敵範囲内にプレイヤーが入ったら、敵はプレイヤーを発見状態とする。
  と見したら、索敵範囲内でのみプレイヤーの方向に移動を開始し、一定の間隔で攻撃する。攻撃までの間隔は設定できる。
  ズ敵範囲外にプレイヤーが移動した場合には、そこで発見状態は終了し、移動をやめる。
  索敵範囲内にプレイヤーがいない場合には、その場で待機、あるいはウロウロ歩く移動を一定の間隔で交互に行う。これらの各間隔は設定できる。

・敵のHPは敵の頭上に横ゲージ表示し、現在値がグラフィカルに伝えられるようにデザインする。ゲージは右端がHP最大、左端がHP最小とする。

 先ほどまでに、待機、移動、攻撃の処理を実装できていますので、すべての行動を、上記の索敵範囲という概念とロジックに基づいて行動されるように変更しましょう。

索敵範囲について設計する

 上記の設計でロジックを組んで敵が自分の行動の判断を行うためには、索敵範囲というものが必要になってきます。
とはいっても、敵には視線という概念や範囲という概念はありません。
そこで、Unityのコライダー機能を利用し、これを索敵範囲として扱うように考えてみましょう。
 
 まずは敵の子オブジェクトとして、空のゲームオブジェクトを1つ作成します。
このゲームオブジェクトにCapsuleColliderをAddComponentします。敵を中心として、大きな円のコライダーを作成しましょう。
IsTriggerをオンにして、物理的な当たり判定はなくしておきます。





 この見えない円の範囲を敵の持つ索敵範囲と扱うようにします。このコライダーの範囲内にプレイヤーが侵入した場合(当たり判定が取れた場合)
それは「プレイヤーを発見した状態」とするようにします。逆に、コライダーの範囲内にプレイヤーがいなければ、それは「プレイヤーを発見していない状態」とするようにします。 

 必要な要件としては、発見判定用の処理に対応した変数と、たくさんあるゲームオブジェクトからどのようにプレイヤーの判定を行うかです。
発見判定用の処理としては、OnTriggerEnterメソッドとOnTriggerExitメソッドが利用できそうです。また、その判定にはbool型の変数を用意すればよさそうですね。
ゲームオブジェクトからプレイヤーを判別するには、Tagを利用しましょう。Playerのゲームオブジェクト(Unitychan)を選択して
TagにPlayerを設定しておきます。こうすることにより、ゲームオブジェクトの持つTagを使って判定が可能になります。



 それでは、ここまでの、発見処理を行える索敵範囲用のクラスを作成し、その中で発見判定用の処理と変数を作成します。

 サンプルコードの実装例を記載します。SearchAreaというクラス名です。

 <= +ボタンを押すと開きますので、自分なりの実装を行った上で確認をしてみましょう。


実装例における、索敵範囲の判定です。Unitychanの位置と索敵範囲に合わせてisSearchingがオンオフされるのがわかると思います。

https://gyazo.com/e6a8617c0f7a4ab217a0e50ecd8b9f48

コメントをかく


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

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

Menu



プログラムの基礎学習

コード練習

技術/知識(実装例)

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

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

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

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

レースゲーム(抜粋)

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

3D脱出ゲーム(抜粋)

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

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

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

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

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

VideoPlayer イベント連動の実装例

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

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

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

private



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

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