くろくまそふとホーム「くろくまそふと」についてゲーム作品一覧ゲーム用プログラム・素材配布ゲームの作り方BOOTHホームゲーム制作メモ【Unity】AIで自動行動する敵キャラクターの作り方ゲーム制作メモ2020.01.02Unityに限らず、ゲームを作っていると多くの場合で「敵キャラクター」が必要になる場合があります。一口に敵キャラクターといっても様々だと思いますが、中でも「AIで状況を判断して自動行動する敵キャラクター」は特に需要が高いと思われます。このような敵キャラは作るのが比較的難しいため、どうやって作ればいいのか分からないという方も多いのではないでしょうか。そこで今回は3Dゲーム用の敵キャラを例に挙げて、AIを持つ敵キャラの作り方を説明していきますね。経路探索→NavMeshAgent状況判断→ステートベースAIおわりに:敵キャラクターを自作してゲームを面白くしよう敵キャラクターに必要な機能では、はじめに「ゲームの敵キャラクター」に必要な機能を整理していきましょう。前提として次のようなゲームに使う敵キャラについて考えるものとします:3Dゲームアクション性の高いゲームそうすると主に必要な機能としては次の2項目を挙げられます。経路探索:(例)障害物に引っかからずにプレイヤーを追いかける状況判断:(例)プレイヤーを見つけたら攻撃する経路探索まず一つ目は経路探索です。アクション性の高いゲーム(特にアクションゲーム、FPS・TPS等)では、敵キャラクターが適切に動かなければゲームが面白くなりません。そこで障害物を上手く避けて目的地に移動できるようにする必要があります。経路探索の処理は自力で実装しようとすると難しいジャンルですが、最近のゲームエンジンではその辺を手軽に解決できるAPIが提供されているのでそれを使えばOKでしょう。次に二つ目は状況判断です。アクション性の高いゲームでは敵キャラクターとの戦闘を行う場面がよくあると思いますが、そこで上手く状況を判断して立ち回るAIが求められます。状況判断を行うAIの種類は色々あり、実際にどれを使えばよいのかはゲームによりけりです。状況判断によく使われるAIは次の通りです。ルールベースAI:設定された条件によって判断ステートベースAI:状況に合った状態(ステート)を実行ビヘイビアベースAI:行動をツリー化し、そのツリーをたどって判断ユーティリティベースAI:行動の見返りを計算して、最も多くの見返りのある行動を実行Unityでの敵キャラクターの具体的な作り方では、ここから敵キャラクターの作り方をもう少し具体的に見ていきましょう。Unityで敵キャラクターを実装する方法は次の通りです。経路探索:NavMeshAgentを使う状況判断:ステートベースAIを実装する経路探索→NavMeshAgentまず経路探索については、Unityに「NavMeshAgent」という経路探索コンポーネントが用意されているのでそれを使いましょう。癖が強い機能ではありますが、上手く使えば手軽に経路探索を行うことができます。NavMeshAgentの使い方は姉妹サイトの「ナビメッシュエージェント(NavMeshAgent)の使い方」で詳しく説明しているので、そちらをご覧いただければと思います。状況判断→ステートベースAIさて、次は状況判断のAIの作り方です。先述の通りAIの種類は色々ありますが、ここでは汎用性が高く・実装が簡単な「ステートベースAI」の作り方を紹介します。ステートの作成まず、列挙型を使って必要なステートを作成します。次にAIの準備やメインルーチンの処理を行うメソッドを用意します。StartCoroutine("AiTimer");}InitAIメソッドはAIの初期化を行うメソッドで、AiTimerメソッドは思考のインターバルを設定するコルーチンです。AiTimerが動作している間はisAiStateRunningがTrueになるようにすると、その時は処理が実行されなくなります。このようにしているのは毎フレーム思考ルーチンを走らせる必要がないからです。AIのメインルーチンそうしたらAIのメインルーチンをキャラクターごとに書きます。普段は適当に移動プレイヤーがshootDistanceよりも近づいたら移動しながら攻撃という行動をとる敵の場合なら次のようになります。}}ここでwaitは思考ルーチンを強制的に停止させるフラグです。停止フラグが立った場合はWAITステートに遷移し、その後の判断は行いません。行動実行あとは実際の行動処理をUpdate等から呼び出せばOKです。}}これでステートベースAIを実装することができました。ちなみに、アセットストアにはビヘイビアベースAIを導入できるアセットがいくつか販売されているので、より高度な状況判断ができるAIを作りたい方はストアを見てください。おわりに:敵キャラクターを自作してゲームを面白くしよう以上、簡単ではありますがUnityでの敵キャラクターの作り方を紹介しました。面白いゲームを作るためには敵キャラクターを上手く作ることは欠かせません。今回の内容を足掛かりとして敵キャラの作り方を研究してみてください。Pocketくろくまくろくまそふと関連記事お知らせ3Dカーアクションゲーム「爆走!デンジャラスドライブ」を公開しました!先月からUnityで作っていた3Dカーアクションゲーム「爆走!デンジャラスドライブ」をリリースしたのでお知らせします。ゾンビの群れや障害物をぶっ飛ばしながら爆...ゲーム制作メモ初めて「1週間ゲームジャム」に参加した感想すでに他の記事にも書いたとおり、7月1日~7日にかけて行われた「1週間ゲームジャム」(第12回)に参加しました。この記事ではそのゲームジャムに参加した感想を書いていきます。2D」を使うと楽に作れるということを覚えたのでメモしておきます。2019年版2019.08.06ゲームに使えるフリーフォントまとめ2019.06.19【Unity】JSONを使ったセーブ・ロード処理2019.03.232019.06.04【Unity】AIで自動行動する敵キャラクターの作り方2020.01.022020.01.02【ウディタ】Game.exeのアイコンを変更する方法2018.06.03。