【Unity入門】ランダムパトロールAIを作成しよう!
目次
- はじめに
- ランダムパトロールAIの作成
- プロジェクトの準備
- ナビメッシュエージェントの追加
- ナビメッシュオブジェクトの追加
- パトロールAIコンポーネントの作成
- Aiの目的地の設定
- パトロールの実装
- プレイヤーオブジェクトの追加
- プレイヤーの追跡と攻撃
🤖 ランダムパトロールAIの作成
1. はじめに
今日はランダムパトロールAIの作成方法について紹介します。AIエネミーの基本的な状態として、AIエネミーは私たちに気づくほど接近するまでこの状態にあり、それから私たちを追いかけ始め、攻撃を行います。このプロジェクトでは、3Dキャラクターコントローラーのプロジェクトを使用します。プレイヤーや武器、アニメモデルも含まれています。さあ、これから始めましょう!
2. ランダムパトロールAIの準備
まず、ランダムパトロールAIを作成するために、ナビメッシュエージェントを追加します。ナビメッシュエージェントは、キャラクターの周りに円柱の形状のヒットボックスを作成します。エネミーキャラクターの外形に合わせて半径と高さを調整します。次に、パッケージマネージャーを開き、com.unity.ai.navigation
パッケージを追加します。このパッケージは実験的なものですが、問題なく動作します。その後、ナビメッシュサーフェスを設定し、ナビメッシュをベイクします。
3. パトロールAIコンポーネントの追加
次に、AIのパトロール動作を制御するためのAnime AI Patrol
コンポーネントを追加します。このコンポーネントには、プレイヤーオブジェクトやナビメッシュエージェントなどの変数を追加します。さらに、目的地ポイントや歩行範囲などのパラメータも設定します。
4. Aiの目的地の設定
パトロールAIはランダムな目的地ポイントに向かって歩行するため、SearchDestination
関数を作成します。この関数では、ランダムなX座標とZ座標を生成し、目的地ポイントを設定します。ただし、目的地がナビメッシュ範囲内にあるかどうかをチェックする必要があります。そのため、Physics.Raycast
関数を使用して、目的地ポイントの下方向にレイキャストを行い、地面のレイヤーと衝突するかどうかを確認します。
5. パトロールの実装
パトロールAIのメイン機能は、目的地への移動です。Patrol
関数では、目的地が設定されていない場合はSearchDestination
関数を呼び出し、目的地を設定します。目的地が設定されている場合は、navMeshAgent
のSetDestination
関数を使用して移動します。また、現在位置と目的地の距離が一定範囲以下になった場合は、新しい目的地を設定します。
以上がランダムパトロールAIの作成方法です。プロジェクト全体の詳細なコーディングやアニメーション設定は、次のパートで説明します。
このパートでは、ランダムに移動するAIエネミーを作成しました。これにはまだ改良の余地がありますが、基本的なコーディングは完了しました。次のパートでは、プレイヤーを追いかけて攻撃する機能を追加します。お楽しみに!
【リソース】
- プロジェクト:リンク
- パトレオールAIのスクリプト:リンク
FAQ
Q: ナビメッシュエージェントの設定方法は?
A: ナビメッシュエージェントのコンポーネントを追加し、エージェントの形状を設定してください。
Q: パトロールAIの目的地はどのように設定するのですか?
A: AIのパトロール範囲内でランダムな位置を生成し、レイキャストを使用してナビメッシュ範囲内かどうかを確認して目的地を設定します。
Q: プレイヤーオブジェクトを追加する方法は?
A: gameObjects.Find
メソッドを使用して、名前でプレイヤーオブジェクトを検索し、変数に代入します。