Unity 敵にプレイヤーを追いかけさせる方法

Unity


行動範囲の指定

AI Navigationをインポートします

Window→AI→NavMesh(Obsolete)を選択

とりあえずパラメータはいじらずにベイクしてみます

行動できる範囲が青く表示されました

Mayaから適当にオブジェクトをインポートして、HierarchyウインドウにNav Mesh Agentコンポーネントを追加します

そのまま再生するとオブジェクトが宙に浮いてしまったのですが、Base Offsetを0にして、Heightを半分にするといい感じになりました

スクリプト

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.AI;
[RequireComponent(typeof(NavMeshAgent))]
public class EnemyMove : MonoBehaviour
{
    [SerializeField] private PlayerController _playerController;
    private NavMeshAgent _agent;
  
    void Start()
    {
        _agent = GetComponent<NavMeshAgent>();
    }
   
    private void Update()
    {
        _agent.destination = _playerController.transform.position - new Vector3(0, 0, -2);
    }
}

こちらがnpcにプレイヤーを追いかけさせるスクリプトになります

_agent.destinationが目的地となり、対象をプレイヤーの位置として毎フレーム距離を縮めていくことになります

プレイヤーにめり込まないように目的地をプレイヤー位置から少しずらしてあります

こちらのスクリプトを先ほどインポートしたオブジェクトにアタッチします

続いてPlayer Controllerの部分にプレイヤーが操作するオブジェクトをアタッチします

テスト

もふもふ
もふもふ

シュールすぎもふ(;゚Д゚)

イスがプレイヤーを追いかけてきたので成功です



まとめ

敵にプレイヤーを追いかけさせる方法

NavMeshをインポートしてベイク→敵オブジェクトにNav Mesh Agentコンポーネントを追加→追従用スクリプトを作成し敵オブジェクトにアタッチ→アタッチしたスクリプトに目的地となるプレイヤーオブジェクトをアタッチ

参考文献:賀好昭仁 作って学べるUnity本格入門 技術評論社 2022 178ページ

タイトルとURLをコピーしました