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; } } }
public void EventTargetReached() { transform.position = RandomCirclePos(); /*thisPursuerInstance.tracePath = traceToggle.isOn; * thisPursuerInstance.trajectoryOptimization = optimizeToggle.isOn; * thisPursuerInstance.trajectorySmoothing = smoothToggle.isOn;*/ thisPursuerInstance.MoveTo(target); }
private void Update() { //if the target for some reason was destroyed, destroy missle if (target == null) { Destroy(gameObject); return; } if (isReady) { //if the target has moved from the previous coordinate(targetOldPos) to more than "targetPathUpdateOffset", update the path to the target if (Vector3.Distance(targetOldPos, target.position) > targetPathUpdateOffset) { targetOldPos = target.position; if (thisPursuerInstance.GetCurCondition() == "Movement") { thisPursuerInstance.RefinePath(target); } else { thisPursuerInstance.MoveTo(target, true); } } } }
public void TheGraphIsReady() { thisPursuerInstance = GetComponent <Pursuer>(); targetOldPos = target.transform.position; thisPursuerInstance.MoveTo(target.transform); isReady = true; }
// Update is called once per frame void Update() { if (!isSceneReady) { isSceneReady = spaceManagerInstance.isPrimaryProcessingCompleted; } if (isSceneReady && canSpawn) { float y = Random.Range(15, 140); transform.position = new Vector3(transform.position.x, y, transform.position.z); GameObject spawnedEnemy = Instantiate(enemyPrefab, transform.position, Quaternion.identity); /*GameObject.Find("defender").GetComponent<DefenderController>().enemyDict.Add(spawnedEnemy.transform,false);*/ Pursuer spawnedPursuerInstance = spawnedEnemy.GetComponent <Pursuer>(); spawnedPursuerInstance.trajectoryOptimization = optimizeTrajectory; spawnedPursuerInstance.trajectorySmoothing = smoothTrajectory; spawnedPursuerInstance.tracePath = drawTrajectory; spawnedPursuerInstance.MoveTo(target); spawnedEnemy.transform.rotation = Quaternion.LookRotation(target.position - spawnedEnemy.transform.position); /*spawnedPursuerInstance.yMax = y + 15;*/ /*spawnedPursuerInstance.speed = Random.Range(.15f,.5f);*/ canSpawn = false; StartCoroutine(SpawnAllower()); } }
//Start pursuit of the target public void BeginPursuit(GameObject target) { this.target = target.transform; thisPursuerInstance = GetComponent <Pursuer>(); targetOldPos = target.transform.position; targetPathUpdateOffset = 8; thisPursuerInstance.MoveTo(target.transform); }
public void Move(Vector3 targetPosition) { //if the target has moved from the previous coordinate(targetOldPos) to more than "targetPathUpdateOffset", update the path to the target if ((_targetOldPosition - targetPosition).sqrMagnitude > _targetPathUpdateOffset * _targetPathUpdateOffset) { _targetOldPosition = targetPosition; if (_pursuer.GetCurCondition() == "Movement") { _pursuer.RefinePath(targetPosition + Vector3.up * 3f); } else { _pursuer.MoveTo(targetPosition + Vector3.up * 3f, true); } } }
// 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; } } }
private void Start() { pursuerInstance = plane.GetComponent <Pursuer>(); pursuerInstance.MoveTo(target.position); }