using UnityEngine; using System.Collections; /// /// 寻路组件切换 /// public class AgentSwitch : MonoBehaviour { UnityEngine.AI.NavMeshAgent com_Agent; UnityEngine.AI.NavMeshObstacle com_Obs; bool isMove = false; // Use this for initialization void Start () { com_Agent = GetComponent(); com_Obs = GetComponent(); } // Update is called once per frame void Update () { switchNav(); } private void switchNav() { if (!com_Agent.enabled) { return; } if (com_Agent.velocity.magnitude > 0) { isMove=true; } else { if (isMove) { Delaynav(); } } } public void Delaynav() { isMove = false; GetComponent().SetFloat("AD", 0); GetComponent().SetFloat("WS", 0); StartCoroutine(delayNav()); } IEnumerator delayNav() { com_Agent.enabled = false; yield return null; if (!com_Agent.enabled) { com_Obs.enabled = true; } else { StartCoroutine(delayNav()); } } }