public List <Character> GetEnemiesByRange(TeamFlag team, Vector3 position, float distance) { List <Character> targets = new List <Character>(); for (int i = 1; i < m_teamList.Length; i++) { if (true == team.IsAlly(TeamManager.ToFlag(i))) { continue; } List <Character> enemyList = m_teamList[i]; for (int k = 0; k < enemyList.Count; k++) { Character enemy = enemyList[k]; float dist = Vector3.Distance(enemy.transform.position, position); if (dist > distance) { continue; } targets.Add(enemy); } } return(targets); }
public Character GetEnemyByRange(TeamFlag team, Vector3 position, Vector3 forward, float distance, float angle) { for (int i = 1; i < m_teamList.Length; i++) { if (true == team.IsAlly(TeamManager.ToFlag(i))) { continue; } List <Character> enemyList = m_teamList[i]; for (int k = 0; k < enemyList.Count; k++) { Character enemy = enemyList[k]; Vector3 dir = enemy.transform.position - position; if (Vector3.Angle(dir, forward) > angle * 0.5f) { continue; } if (dir.magnitude > distance) { continue; } return(enemy); } } return(null); }