Beispiel #1
0
    private void FindTheNearestEnemy()
    {
        mode = teamController.GetTeamSearchMode(transform);
        /* Kill the shortest distance enemy */
        if (mode == TeamController.SearchMode.distance || mode == TeamController.SearchMode.defense)
        {
            target = enemyList.OrderBy(o => DistanceCalculate(o.position, agent.position)).FirstOrDefault();
        }
        /* Kill the shortest distance enemy with lowest health precentage */
        else if (mode == TeamController.SearchMode.health)
        {
            target = enemyList.OrderBy(o => (o.root.GetComponent <SlimeHealth>().currentHealth / o.root.GetComponent <SlimeHealth>().startHealth)).
                     ThenBy(o => DistanceCalculate(o.position, agent.position)).FirstOrDefault();
        }
        /* Kill the shortest distance with class priority() */
        else if (mode == TeamController.SearchMode.priority)
        {
            target = enemyList.OrderBy(o => o.root.GetComponent <Slime>().GetSlimeClass().classPriority).
                     ThenBy(o => DistanceCalculate(o.position, agent.position)).FirstOrDefault();
        }

        if (target != null && target != prevTarget)
        {
            prevTarget = target;
            tarHealth  = target.root.GetComponent <SlimeHealth>();
            range      = slime.scaleRadius + slime.actionRange + target.root.GetComponent <Slime>().GetSlimeClass().scaleRadius;
            //Client set the target
            photonView.RPC("RPC_ClientSetTarget", PhotonTargets.Others, target.root.gameObject.GetPhotonView().viewID);
        }
    }
Beispiel #2
0
 private void DefaultSearching()
 {
     TeamController.SearchMode mode = tm.GetTeamSearchMode(_transform);
     /* Kill the shortest distance enemy with killing priority(slime -> building) */
     if (mode == TeamController.SearchMode.distance || mode == TeamController.SearchMode.defense)
     {
         target = enemies.OrderBy(o => o.root.GetComponent <Slime>().GetSlimeClass().killingPriority).
                  ThenBy(o => DistanceCalculate(o.position, agent.position)).FirstOrDefault();
     }
     /* Kill the shortest distance enemy with lowest health precentage */
     else if (mode == TeamController.SearchMode.health)
     {
         target = enemies.OrderBy(o => (o.root.GetComponent <SlimeHealth>().currentHealth / o.root.GetComponent <SlimeHealth>().startHealth)).
                  ThenBy(o => DistanceCalculate(o.position, agent.position)).FirstOrDefault();
     }
     /* Kill the shortest distance with class priority() */
     else if (mode == TeamController.SearchMode.priority)
     {
         target = enemies.OrderBy(o => o.root.GetComponent <Slime>().GetSlimeClass().classPriority).
                  ThenBy(o => DistanceCalculate(o.position, agent.position)).FirstOrDefault();
     }
 }