Ejemplo n.º 1
0
    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;
            }
        }
    }
Ejemplo n.º 2
0
    public void EventTargetReached()
    {
        transform.position = RandomCirclePos();

        /*thisPursuerInstance.tracePath = traceToggle.isOn;
         * thisPursuerInstance.trajectoryOptimization = optimizeToggle.isOn;
         * thisPursuerInstance.trajectorySmoothing = smoothToggle.isOn;*/
        thisPursuerInstance.MoveTo(target);
    }
Ejemplo n.º 3
0
    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);
                }
            }
        }
    }
Ejemplo n.º 4
0
 public void TheGraphIsReady()
 {
     thisPursuerInstance = GetComponent <Pursuer>();
     targetOldPos        = target.transform.position;
     thisPursuerInstance.MoveTo(target.transform);
     isReady = true;
 }
Ejemplo n.º 5
0
    // 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());
        }
    }
Ejemplo n.º 6
0
 //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);
 }
Ejemplo n.º 7
0
 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);
         }
     }
 }
Ejemplo n.º 8
0
    // 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;
            }
        }
    }
Ejemplo n.º 9
0
 private void Start()
 {
     pursuerInstance = plane.GetComponent <Pursuer>();
     pursuerInstance.MoveTo(target.position);
 }