public override bool perform(AiController controller) { if (controller.pickUpAvailable || controller.target || controller.aiVitals.isDead) { return(false); } if (_elapsedTime == 0 && !controller.navAgent.hasPath) { //Debug.Log("Starting to wander."); _path = new NavMeshPath(); NavMesh.CalculatePath(controller.navAgent.transform.position, controller.GetRandomRadialPos(wanderRadius), NavMesh.AllAreas, _path); //Debug.Log("Path Calculated for " + agent.name); controller.navAgent.SetPath(_path); //Debug.Log("Path Set for " + agent.name); } if (controller.navAgent.remainingDistance <= controller.navAgent.stoppingDistance) { //Debug.Log("Started waiting."); _elapsedTime += Time.deltaTime; if (_elapsedTime >= _tempWaitTime) { //Debug.Log("Finished waiting."); controller.navAgent.ResetPath(); _completed = true; } } return(true); }
public void Wander(AiController controller, NavMeshAgent agent, float waitTime, float wanderRadius) { if (agent.hasPath) { return; } path = new NavMeshPath(); elapsedTime += Time.deltaTime; //Debug.Log(elapsedTime); if (elapsedTime > waitTime) { elapsedTime -= waitTime; NavMesh.CalculatePath(agent.transform.position, controller.GetRandomRadialPos(wanderRadius), NavMesh.AllAreas, path); //Debug.Log("Path Calculated for " + agent.name); agent.SetPath(path); //Debug.Log("Path Set for " + agent.name); } }