public GameObject getEnemy(DBaseFightRole attacker,List<DBaseFightRole> enemyList,EAttackStragety priority = EAttackStragety.EAttackStragety_Nearest) { GameObject resultEnemy = null; switch(priority) { case EAttackStragety.EAttackStragety_Nearest: float distance = 100; foreach(DBaseFightRole enemy in enemyList) { float tempdist = Vector3.Distance(attacker.rolePosition, enemy.rolePosition); if(tempdist < distance) { resultEnemy = enemy.gameObject; distance = tempdist; } } break; case EAttackStragety.EAttackStragety_MainRole: foreach (DBaseFightRole enemy in enemyList) { if(enemy.isMainRole) { resultEnemy = enemy.gameObject; break; } } break; } return resultEnemy; }
//寻找技能攻击对象 priority 优先攻击对象策略,isAttackEnemy 是攻击敌人,还是攻击己方,比如一些 加血,加防的技能攻击对象是己方,再比如混乱状态下 会攻击己方 public GameObject findAttackEnemy(DBaseFightRole attacker, EAttackStragety priority = EAttackStragety.EAttackStragety_Nearest,bool isAttackEnemy = true) { if(attacker != null) { int attackside = attacker.side; List<DBaseFightRole> tempEnemy = new List<DBaseFightRole>(); foreach(DBaseFightRole fightrole in allRoles) { if (isAttackEnemy && fightrole.side != attackside) { tempEnemy.Add(fightrole); } else if (!isAttackEnemy && fightrole.side == attackside && fightrole != attacker) tempEnemy.Add(fightrole); } return getEnemy(attacker, tempEnemy, priority); } return null; }