//====================================== // ●对周围的敌人数量进行计数 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>()); } } }
/// <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); }