コード例 #1
0
ファイル: FightRoleManager.cs プロジェクト: satela/xjhU3d
    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;
    }
コード例 #2
0
ファイル: FightRoleManager.cs プロジェクト: satela/xjhU3d
    //寻找技能攻击对象 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;
    }