敵オブジェクトのboxcolliderで設定された範囲の中にプレイヤーが入れば追跡するというスクリプトを作成したのですが、
例えばstage1の範囲の中にプレイヤーがいれば追跡する、stage1から出れば追跡しない。という風にしたいのですがboxcolliderが敵が動くのと連動して動くのでstage1以外の場所でも追跡してきます。
boxcolliderを連動させず初めの位置に固定する方法、またはboxcolliderを使わずに追跡が始まる範囲を決める方法などがあればご教授おねがいします。
using
1using System.Collections.Generic; 2using UnityEngine; 3using UnityEngine.AI; 4using UnityStandardAssets.Characters.ThirdPerson; 5 6[RequireComponent(typeof(UnityEngine.AI.NavMeshAgent))] 7//[RequireComponent(typeof(ThirdPersonCharacter))] 8 9public class EnemyChase : MonoBehaviour 10{ 11 [System.NonSerialized] 12 public bool isActive = false; //isActiveをパブリック変数にしたので他のオブジェクトから敵キャラの追跡・停止を操作することもできるようになっています 13 14 [SerializeField] 15 Transform target; 16 17 NavMeshAgent agent; 18 ThirdPersonCharacter character; 19 20 void Start() 21 { 22 agent = GetComponent<NavMeshAgent>(); 23 // character = GetComponent<ThirdPersonCharacter>(); 24 25 agent.updateRotation = true; 26 agent.updatePosition = true; 27 } 28 29 private void Update() 30 { 31 if (isActive) 32 { 33 34 agent.isStopped = false; 35 36 if (target != null) 37 agent.SetDestination(target.position); 38 39 if (agent.remainingDistance > agent.stoppingDistance) 40 { 41 // character.Move(agent.desiredVelocity, false, false); 42 } 43 else 44 { 45 //character.Move(Vector3.zero, false, false); 46 } 47 } 48 else 49 { 50 //character.Move(Vector3.zero, false, false); 51 agent.isStopped = true; //isActiveがfalseのときはNavMeshAgentを停止。これで敵が止まる 52 53 return; 54 } 55 56 } 57 58 public void SetTarget(Transform target) 59 { 60 this.target = target; 61 } 62 63 //他のオブジェクトに接触したときの処理 64 void OnCollisionEnter(Collision other) 65 { 66 if (other.gameObject.tag == "Player") 67 { 68 Debug.Log("ゲームオーバーです。"); 69 70 isActive = false; 71 } 72 } 73 74 //検出範囲に入った時の処理 75 void OnTriggerStay(Collider other) 76 { 77 if (other.gameObject.tag == "Player") 78 { 79 isActive = true; 80 } 81 } 82 83 //検出範囲から出たときの処理 84 void OnTriggerExit(Collider other) 85 { 86 if (other.gameObject.tag == "Player") 87 { 88 isActive = false; 89 } 90 } 91} 92コード
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/08/29 09:12