Exemple #1
0
    //======================================
    // ●对周围的敌人数量进行计数
    private void OnTriggerEnter(Collider other)
    {
        CharacterMono target = other.gameObject.GetComponent <CharacterMono>();

        // 当目标碰撞体是"普通单位"且与自己不属于同个阵营时,敌人数加1
        if (target != null && target.IsCanBeAttack())
        {
            if (!characterMono.CompareOwner(target))
            {
                arroundEnemies.Add(other.GetComponent <CharacterMono>());
            }
            else
            {
                arroundFriends.Add(other.GetComponent <CharacterMono>());
            }
        }
    }
Exemple #2
0
    /// <summary>
    /// 判断某个单位可以被准备释放的技能攻击
    /// </summary>
    /// <returns></returns>
    protected bool CanBeExecuteToTarget(CharacterMono speller, CharacterMono target)
    {
        // 1. 施法者和目标阵营不一样,且目标阵营不属于中立阵营,则目标属于敌人
        if (!speller.CompareOwner(target))
        {
            if (ContainsTarget(UnitType.Enermy))
            {
                return(true);
            }
        }
        else
        {
            // 2. 施法者和目标阵营一样,则目标属于朋友单位
            if (ContainsTarget(UnitType.Friend))
            {
                return(true);
            }
        }

        // 3. 目标是英雄单位
        if (target is HeroMono)
        {
            if (ContainsTarget(UnitType.Hero))
            {
                return(true);
            }
        }

        // 4. 目标是建筑物
        if ((target.characterModel.unitType & UnitType.Building) == UnitType.Building)
        {
            if (ContainsTarget(UnitType.Building))
            {
                return(true);
            }
        }

        // 5. 目标是守卫
        if ((target.characterModel.unitType & UnitType.Guard) == UnitType.Guard)
        {
            if (ContainsTarget(UnitType.Guard))
            {
                return(true);
            }
        }

        // default:
        return(false);
    }