【Unity】3D敵AIの実装:ダメージを受ける&死亡
目次
- はじめに
- エネミーAIの実装
- HPの設定
- ダメージを与える
- アニメーションの制御
- タグの設定
- サウンド効果の追加
- おわりに
エネミーAIの実装
1. はじめに
みなさん、こんにちは!YouTubeチャンネルへようこそ!今回の動画では、エネミーのAI行動の実装を完了させます。矢を使ってエネミーを攻撃することができます。エネミーは『叩かれる』アニメーションが再生され、倒すこともできます。それでは、始める前に、このゲームに関する私の最初の動画を見ていただき、チャンネルの登録もお願いします。それでは、さっそく始めましょう!
2. エネミーAIの実装
前回の動画で途中まで実装した状態からスタートします。ナイトメアドラゴンという敵キャラクターを追加し、アイドル、パトロール、攻撃、追跡といった状態を作成しました。しかし、エネミーに攻撃や倒す機能がありません。そのためにまず、エネミーにHPを付与する必要があります。エネミー用のスクリプトを作成し、ナイトメアドラゴンにアタッチしましょう。
2-1. HPの設定
エネミーにHPを設定するため、新しい変数を追加しましょう。public intという型で、変数名を「hp」とし、初期値を100に設定します。
💡 Pros:
- エネミーにHPの概念を導入することで、よりリアルな戦闘システムを作ることができます。
💡 Cons:
- HPの設定を行うことで、ゲームのバランス調整が必要になる場合があります。
2-2. ダメージを与える
エネミーにダメージを与えるために、スクリプトに新しいメソッドを追加しましょう。publicなvoidメソッドとし、名前は「takeDamage」としましょう。引数としてダメージ量の変数「damageAmount」を受け取ります。この関数が呼び出されるたびに、HPからダメージ量を減らします(hp -= damageAmount)。その後、エネミーのHPが0以下であるかどうかを確認し、0以下であれば死亡アニメーションを再生します。それ以外の場合は、「叩かれる」アニメーションを再生します。アニメーションを再生するためには、アニメーターコントローラーコンポーネントを変更する必要があります。
💡 Pros:
- ダメージを与えるたびにエネミーの状態を更新するため、リアルな戦闘体験を提供できます。
💡 Cons:
- HPの変動によって、エネミーの挙動が不自然になる可能性があります。
2-3. アニメーションの制御
ナイトメアドラゴンにはアニメーターコンポーネントがあります。これを開き、死亡とダメージのアニメーションを追加しましょう。これらのアニメーションは、アニメーションフォルダー内にあります。例えば、「die」アニメーションを、HPが0以下の場合に再生するように設定しましょう。アニメーションをアニメーターコンポーネントにドラッグ&ドロップします。また、エネミーがアイドル、ウォーキング、攻撃などの状態に関係なく死亡アニメーションやダメージアニメーションを再生できるよう、トランジションの設定を行います。条件を追加するために、パラメータータブの下にパラメーター(トリガー)を追加しましょう。
💡 Pros:
- アニメーションの設定によって、エネミーの状態の変化が視覚的に表現され、プレイヤーにフィードバックが与えられます。
💡 Cons:
- アニメーションの設定が煩雑になる可能性があります。
2-4. タグの設定
エネミーを識別するために、新しいタグを追加しましょう。「dragon」という名前のタグを作成し、ナイトメアドラゴンに割り当てます。
💡 Pros:
💡 Cons:
- 追加のタグ設定が必要になり、手間がかかる場合があります。
2-5. サウンド効果の追加
追加のサウンド効果を実装しましょう。既にドラゴンの死亡やダメージの音声をダウンロードしており、Audio ManagerとSound Scriptの2つのスクリプトも必要です。まず、Assetsフォルダにこれらのスクリプトをドラッグ&ドロップしましょう。次に、空のゲームオブジェクトにAudio Managerスクリプトをアタッチして、サウンドの追加を行います。
💡 Pros:
- ゲームに音声効果を追加することで、リアリティのあるゲームプレイ体験が提供されます。
💡 Cons:
- 追加スクリプトの設定や音声データの管理が必要になる場合があります。
3. おわりに
今回の動画では、エネミーのAI行動の実装を完了させました。エネミーにダメージを与えることができ、また倒すこともできます。さまざまな試みを行い、問題や不具合があれば修正していきましょう。それでは、次回の動画でお会いしましょう!
FAQ
Q: エネミーのHPはどのように設定すればよいですか?
A: 「hp」という変数にHPの値を設定します。既定値は100ですが、必要に応じて変更することができます。
Q: エネミーにダメージを与えるにはどうすればよいですか?
A: 「takeDamage」メソッドを使用します。このメソッドにはダメージ量の引数があり、それを使用してエネミーのHPを減らします。
Q: エネミーが倒れた際に再生されるアニメーションはありますか?
A: はい、エネミーのHPが0以下になった場合、「death」アニメーションが再生されます。
Q: エネミーがダメージを受けた際のアニメーションはありますか?
A: はい、「get hit」アニメーションが再生されます。