【サバイバルホラーゲームを作りたい。その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); } }
今回は以上です。