private void SetNavAgent(LocationHistoryPathBase o)
 {
     if (PathFindingManager.Instance)
     {
         PathFindingManager.Instance.SetNavAgent(o);
     }
 }
 public void Init(Color colorT, LocationHistoryPathBase locationHistoryPathBaseT)
 {
     color = colorT;
     locationHistoryPathBase = locationHistoryPathBaseT;
 }
示例#3
0
    public void SetNavAgent(LocationHistoryPathBase o)
    {
        Log.Error("PathFindingManager", "SetNavAgent");
        if (SystemSettingHelper.locationSetting.EnableNavMesh == false)
        {
            return;                                                            //不启用NavMesh
        }
        if (o == null)
        {
            return;
        }
        if (useNavAgent)
        {
            var agent = o.gameObject.AddComponent <NavAgentController>();//往原来物体上加NavAgentController来控制物体移动
            o.navAgent = agent;
        }
        else if (useFollowNavAgent)
        {
            //if (FollowAgent)
            {
                if (o.navAgentFollow == null)
                {
                    if (o == null)
                    {
                        Log.Error("PathFindingManager.SetNavAgent", "o == null");
                        return;
                    }
                    if (o.personnel == null)
                    {
                        Log.Error("PathFindingManager.SetNavAgent", "o.personnel == null");
                        return;
                    }

                    var prefab = TargetPrefabs[o.personnel.TargetType];
                    var obj    = GameObject.Instantiate <GameObject>(prefab, o.transform.position, Quaternion.identity, o.CreatePathParent());
                    //创建一个Agent跟随,这里要直接设置position,因为不设置的话,NavAgent必须在NavMesh上面初始化。
                    var agent = obj.AddMissingComponent <NavAgentFollowPerson>();

                    agent.name             = o.gameObject.name + "(Nav)";
                    agent.gameObject.layer = o.gameObject.layer;
                    agent.gameObject.tag   = o.gameObject.tag;

                    //agent.transform.position = o.transform.position;
                    //agent.transform.parent = o.CreatePathParent();
                    o.navAgentFollow = agent;
                    agent.SetFollowTarget(o.transform);

                    agent.gameObject.SetActive(false);

                    if (o is LocationHistoryPath_M)
                    {
                        LocationHistoryPath_M path = o as LocationHistoryPath_M;
                        if (path.historyPathDrawing != null)
                        {
                            path.historyPathDrawing.target = agent.transform;//绘图目标修改
                        }
                    }
                }
            }
        }
        else
        {
            //不使用NavMesh
        }
    }