void Update() { //moving to the target in case it changes its coordinate if (target.position != targetOldPos) { //pursuer states check, request of moving to the target, previous coordinate assignment if (pursuerInstance.GetStatus() == "Void Movement()") { pursuerInstance.CancelMovement(); pursuerInstance.MoveTo(target); targetOldPos = target.position; return; } if (pursuerInstance.GetStatus() == "Void WaitingForAWay()") { pursuerInstance.CancelWaySearch(); pursuerInstance.MoveTo(target); targetOldPos = target.position; return; } if (pursuerInstance.GetStatus() == "Void WaitingForRequest()") { pursuerInstance.MoveTo(target); targetOldPos = target.position; return; } } }
// Update is called once per frame void Update() { //new target assignment in case the pursuer is waiting for a command if (pursuerInstance.GetStatus() == "Void WaitingForRequest()") { //Indentation from the edges of the search area RaycastHit hit; float xmin = pursuerInstance.xMin + pursuerInstance.spaceFragmentation; float xmax = pursuerInstance.xMax - pursuerInstance.spaceFragmentation; float zmin = pursuerInstance.zMin + pursuerInstance.spaceFragmentation; float zmax = pursuerInstance.zMax - pursuerInstance.spaceFragmentation; Physics.Raycast(new Vector3(Random.Range(xmin, xmax), 200, Random.Range(zmin, zmax)), Vector3.down, out hit); Vector3 targetPos = hit.point + hit.normal * 10 + Vector3.up * 10; if (hit.point.y < 2 && Vector3.Distance(targetPos, plane.transform.position) > 25) { pursuerInstance.MoveTo(targetPos); target.position = targetPos; } } }