private void SetNavAgent(LocationHistoryPathBase o) { if (PathFindingManager.Instance) { PathFindingManager.Instance.SetNavAgent(o); } }
public void Init(Color colorT, LocationHistoryPathBase locationHistoryPathBaseT) { color = colorT; locationHistoryPathBase = locationHistoryPathBaseT; }
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 } }