示例#1
0
    public static AttributesManager[] FindRangePlayer(PlayerFaction targetFaction, Vector3 center, float radius)
    {
        List <AttributesManager> rangeTeammateList = new List <AttributesManager>();

        AttributesManager[] teammateAttrManager = AttributesManager.GetFactionAllAttrManager(targetFaction);
        float sqrRadius = Mathf.Sqrt(radius);

        foreach (AttributesManager tempTeammate in teammateAttrManager)
        {
            Vector3 centerToTeammate = tempTeammate.transform.position - center;
            float   sqrMagnitude     = centerToTeammate.sqrMagnitude;
            if (sqrMagnitude <= sqrRadius)
            {
                rangeTeammateList.Add(tempTeammate);
            }
        }
        return(rangeTeammateList.ToArray());
    }
示例#2
0
    // 获得将被影响的AttributesManager
    private AttributesManager[] GetAllEffectAttrManager(AttributesManager userAttrManager)
    {
        PlayerFaction myFaction    = userAttrManager.faction;
        PlayerFaction enemyFaction = AttributesManager.GetEnemyFaction(myFaction);
        Vector3       position     = userAttrManager.transform.position;
        float         radius       = myItemGroup.itemInfo.radius;

        List <AttributesManager> effectAttrManagerList = new List <AttributesManager>();

        switch (myItemGroup.itemInfo.effectGroup)
        {
        case EffectGroup.MySelf:
            effectAttrManagerList.Add(userAttrManager);
            break;

        case EffectGroup.RandomTeammate:
            AttributesManager[] teammates = AttributesManager.GetFactionAllAttrManager(myFaction);
            effectAttrManagerList.Add(teammates[Random.Range(0, teammates.Length)]);
            break;

        case EffectGroup.OneNearbyTeammate:
            AttributesManager nearbyTeammate = AttributesManager.FindNearbyPlayer(myFaction, position, radius);
            if (nearbyTeammate != null)
            {
                effectAttrManagerList.Add(nearbyTeammate);
            }
            break;

        case EffectGroup.RangeRandomTeammate:
            AttributesManager[] rangeTeamates = AttributesManager.FindRangePlayer(myFaction, position, radius);
            effectAttrManagerList.Add(rangeTeamates[Random.Range(0, rangeTeamates.Length)]);
            break;

        case EffectGroup.RangeTeammate:
            effectAttrManagerList.AddRange(AttributesManager.FindRangePlayer(myFaction, position, radius));
            break;

        case EffectGroup.AllTeammate:
            effectAttrManagerList.AddRange(AttributesManager.GetFactionAllAttrManager(myFaction));
            break;

        case EffectGroup.RandomEnemy:
            AttributesManager[] enemys = AttributesManager.GetFactionAllAttrManager(enemyFaction);
            effectAttrManagerList.Add(enemys[Random.Range(0, enemys.Length)]);
            break;

        case EffectGroup.OneNearbyEnemy:
            AttributesManager nearbyEnemy = AttributesManager.FindNearbyPlayer(enemyFaction, position, radius);
            if (nearbyEnemy != null)
            {
                effectAttrManagerList.Add(nearbyEnemy);
            }
            break;

        case EffectGroup.RangeRandomEnemy:
            AttributesManager[] rangeEnemys = AttributesManager.FindRangePlayer(enemyFaction, position, radius);
            effectAttrManagerList.Add(rangeEnemys[Random.Range(0, rangeEnemys.Length)]);
            break;

        case EffectGroup.RangeEnemy:
            effectAttrManagerList.AddRange(AttributesManager.FindRangePlayer(enemyFaction, position, radius));
            break;

        case EffectGroup.AllEnemy:
            effectAttrManagerList.AddRange(AttributesManager.GetFactionAllAttrManager(enemyFaction));
            break;
        }
        return(effectAttrManagerList.ToArray());
    }