【サバイバルホラーゲームを作りたい。その38】

今回はNAVMESH AIを使用して、ミュータントが追いかけてくるようにします。
youtu.be

・敵が動ける範囲の床にNavigationを設定します。Navigation Staticにチェックし、Navigation AreaをWalkableにし、Bakeします。

・敵が動ける範囲の壁にNavigationを設定します。Navigation Staticにチェックし、Navigation AreaをNot Walkableにし、Bakeします。

・ミュータントに下記スクリプトを追加します。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.AI;

public class StalkerAI : MonoBehaviour //EP38追加 stalkerEnemyにアタッチ
{
    public GameObject stalkerDest;
    NavMeshAgent stalkerAgent;
    GameObject stalkerEnemy;
    Animator animator;
    bool isStalking;

    // Start is called before the first frame update
    void Start()
    {
        stalkerAgent = GetComponent<NavMeshAgent>();
        stalkerEnemy = transform.GetChild(0).gameObject;
        animator = stalkerEnemy.GetComponent<Animator>();
    }

    // Update is called once per frame
    void Update()
    {
        if (!isStalking)
        {
            animator.Play("Idle");
        }
        else 
        {
            animator.Play("Crouched Walking");
            stalkerAgent.SetDestination(stalkerDest.transform.position);
        }
    }

    public bool getIsStalking()
    {
        return this.isStalking;
    }

    public void setIsStalking(bool b)
    {
        this.isStalking = b;
    }
}

・ミュータントがステージに入ってきたら動くようにトリガーとなるキューブを配置し、スクリプトを追加します。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class ActivateStalker : MonoBehaviour //EP38追加 StalkerActivateにアタッチ
{
    BoxCollider boxCollider;
    public StalkerAI stalkerAI;

    private void Start()
    {
        boxCollider = gameObject.GetComponent<BoxCollider>();
    }

    private void OnTriggerEnter(Collider other)
    {
        boxCollider.enabled = false;
        stalkerAI.setIsStalking(true);
    }
}

今回は以上です。