敵AI開発入門 #2 -敵AIを次のレベルへ!究極の攻撃プログラムテクニック公開!
更新日 2024 / 03 / 17
自己紹介
\ ココナラ実績140件達成 /
こんにちは!ゲーム開発所RYURYUのりゅうやと申します。
はじめに
こんにちは、Unityゲーム開発者の皆さん!前回の「敵AI開発入門 #1」では基本的な敵AIの動きを実装する方法について学びました。
今回は、その敵AIに攻撃の能力を追加し、ゲームに更なる深みと興奮をもたらす方法をご紹介します。
プレイヤーに挑戦する、スマートな敵キャラクターを作成しましょう!
敵AIの攻撃はゲームの難易度や興奮度を大きく左右します。
ただ動き回るだけの敵ではなく、プレイヤーにダメージを与える敵はゲームプレイに緊張感をもたらし、プレイヤーを引き込む要素となります。
1.敵AIの視野を実装する
まず、敵AIがプレイヤーを認識できるように、視野を実装します。敵の視野内にプレイヤーが入った場合、敵は攻撃を開始します。
using UnityEngine;
public class EnemySight : MonoBehaviour
{
public float fieldOfViewAngle = 110f;
public bool playerInSight;
public Vector3 lastPlayerSighting;
private GameObject player;
private Vector3 previousSighting;
void Awake()
{
player = GameObject.FindGameObjectWithTag("Player");
}
void Update()
{
Vector3 direction = player.transform.position - transform.position;
float angle = Vector3.Angle(direction, transform.forward);
if (angle < fieldOfViewAngle * 0.5f)
{
RaycastHit hit;
if (Physics.Raycast(transform.position, direction.normalized, out hit))
{
if (hit.collider.gameObject == player)
{
playerInSight = true;
lastPlayerSighting = player.transform.position;
}
}
}
}
}
2.スクリプトを敵オブジェクトにアタッチする
次に、先程作成したスクリプトをUnityエディタ内で敵オブジェクトにアタッチする方法を説明します。
Unityエディタを開いて、Hierarchyウィンドウで敵オブジェクトを選択します。
作成したスクリプト(EnemySight.cs)をAssetsから敵オブジェクトにドラッグ&ドロップします。
これで、敵オブジェクトはスクリプトの制御下にあります。
3.攻撃プログラムを追加する
次に、敵がプレイヤーに攻撃する機能を実装します。このステップでは、敵がプレイヤーに近づいた時に攻撃するロジックを追加します。
using UnityEngine;
public class EnemyAttack : MonoBehaviour
{
public float timeBetweenAttacks = 0.5f;
public int attackDamage = 10;
private GameObject player;
private bool playerInRange;
private float timer;
void Awake()
{
player = GameObject.FindGameObjectWithTag("Player");
}
void Update()
{
timer += Time.deltaTime;
if (timer >= timeBetweenAttacks && playerInRange)
{
Attack();
}
}
void OnTriggerEnter(Collider other)
{
if (other.gameObject == player)
{
playerInRange = true;
}
}
void OnTriggerExit(Collider other)
{
if (other.gameObject == player)
{
playerInRange = false;
}
}
void Attack()
{
timer = 0f;
// Insert player health deduction logic here
// Example: playerHealth.TakeDamage(attackDamage);
}
}
4.インスペクターで敵のパラメータを設定する
次に、敵のパラメータを調整します。これはInspectorウィンドウで行います。
敵オブジェクトを再びHierarchyウィンドウで選択します。
Inspectorウィンドウで、EnemySightスクリプトとEnemyAttackスクリプトの各パラメータ(例:fieldOfViewAngle, timeBetweenAttacks)を設定します。
これで、敵オブジェクトの挙動がスクリプトに従って制御され、設定したパラメータに基づいて動作します。
5.敵の攻撃アニメーションを追加する
攻撃にアニメーションを追加して、リアルな敵キャラクターを作りましょう。AnimatorコンポーネントとAnimationクリップを使用して、敵が攻撃するときにアニメーションが再生されるようにします。
まとめ
この記事では、Unityで敵AIの攻撃プログラムを実装する方法について学びました。これにより、ゲームに更なる深みと興奮をもたらす敵キャラクターを作ることができます。
おすすめ記事
よろしければサポートお願いします! いただいたサポートはクリエイターとしての活動費に使わせていただきます!by ゲーム開発所RYURYU