Exemple #1
0
    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);
    }
Exemple #2
0
    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);
    }