public BattleUnit FindTargetUnitByAbility(BattleUnit caster, Ability ability) { // 全屏技能 if (ability.GetCastRange() <= 0) { return(caster); } BattleUnit lastTarget = caster.target; MultipleTargetsTeam targetTeam = ability.GetTargetTeam(); MultipleTargetsType targetDemageType = ability.GetDamageType(); BattleUnit newTarget; if (lastTarget == null || lastTarget.IsUnSelectable()) { BattleCamp sourceCamp = caster.camp; List <BattleUnit> targets = FindTargetUnits(caster, targetTeam, targetDemageType); newTarget = FilterTargetEntityFromList(caster, ability, targets); } else { newTarget = lastTarget; } return(newTarget); }
// 寻找离指定施放者最近的单位 public BattleUnit FindNearestEnemyUnit(BattleUnit caster) { BattleUnit targetEntity = null; // 找出敌对阵营 BattleCamp enemyCamp = caster.enemyCamp; // 获取指定标记的所有单位 List <BattleUnit> entities = BattleUnitManager.instance.GetEntities(enemyCamp); // 比较距离,找出最近单位 float minDistance = Int32.MaxValue; foreach (BattleUnit entity in entities) { Vector2 distance = caster.Get2DPosition() - entity.Get2DPosition(); if (distance.magnitude < minDistance) { targetEntity = entity; minDistance = distance.magnitude; } } if (minDistance > caster.GetViewRange()) { return(null); } return(targetEntity); }
public HeroActor(BattleUnit battleEntity) { id = battleEntity.GetUniqueID(); camp = battleEntity.camp; isLoadDone = false; this.battleEntity = battleEntity; }
public List <BattleUnit> GetEntities(BattleCamp battleCamp) { m_Temps = new List <BattleUnit>(0); foreach (BattleUnit entity in m_Units) { if (entity.camp == battleCamp) { m_Temps.Add(entity); } } return(m_Temps); }
public BattleUnit(int id, BattleCamp battleCamp, BattleProperty property) : base(id) { property.id = id; camp = battleCamp; m_Property = property; abilities = new List <Ability>(); m_abilityMap = new Dictionary <AbilityCastType, Ability>(4); m_HeroState = HeroState.IDLE; m_BehaviorTree = GetBehaviorTree(); m_DecisionTree = GetDecisionTree(); m_DecisionWorkData = new BattleDecisionWorkingData(this); m_BehaviorWorkData = new BattleBehaviorWorkingData(this); InitAbilities(); }
public void AddToRightBattle(Player player) { if (player.myHeroName == GameManager.instance.myPlayer.myHeroName) { myBattleCamp = BattleCamp.Defenders; } defendersPlayer.Add(player); foreach (var item in rightBattleIcon) { if (item.sprite == emptyCell) { item.sprite = player.icon; item.transform.parent.gameObject.SetActive(true); break; } } }
private List <BattleUnit> FindTargetUnits(BattleUnit caster, MultipleTargetsTeam targetTeam, MultipleTargetsType targetDemageType) { List <BattleUnit> targets = new List <BattleUnit>(0); // 根据阵营找对象 BattleCamp sourceCamp = caster.camp; if (targetTeam == MultipleTargetsTeam.UNIT_TARGET_TEAM_FRIENDLY) { targetTeam = sourceCamp == BattleCamp.FRIENDLY ? MultipleTargetsTeam.UNIT_TARGET_TEAM_FRIENDLY : MultipleTargetsTeam.UNIT_TARGET_TEAM_ENEMY; } else if (targetTeam == MultipleTargetsTeam.UNIT_TARGET_TEAM_ENEMY) { targetTeam = sourceCamp == BattleCamp.FRIENDLY ? MultipleTargetsTeam.UNIT_TARGET_TEAM_ENEMY : MultipleTargetsTeam.UNIT_TARGET_TEAM_FRIENDLY; } switch (targetTeam) { case MultipleTargetsTeam.UNIT_TARGET_TEAM_ENEMY: InsertToTargetList(BattleUnitManager.instance.GetEntities(BattleCamp.ENEMY), targets); break; case MultipleTargetsTeam.UNIT_TARGET_TEAM_FRIENDLY: InsertToTargetList(BattleUnitManager.instance.GetEntities(BattleCamp.FRIENDLY), targets); break; case MultipleTargetsTeam.UNIT_TARGET_TEAM_BOTH: InsertToTargetList(BattleUnitManager.instance.GetEntities(BattleCamp.ENEMY), targets); InsertToTargetList(BattleUnitManager.instance.GetEntities(BattleCamp.FRIENDLY), targets); break; default: break; } return(targets); }
public HeroUnit(int id, BattleCamp camp, BattleProperty property) : base(id, camp, property) { }