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); } }
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(); } }