//向目标地点使用技能 public void UseSkill(List <BattleAction> actions, GridUnit target, BattleSkillAnalysis skillAnalysis) { if (target == null || skillAnalysis == null) { UtilityHelper.LogError("Use skill error, none target or skill"); return; } List <BattleHeroSkillResult> skillResults = new List <BattleHeroSkillResult>(); for (int i = 0; i < skillAnalysis.suitableUnits.Count; ++i) { //范围内的都受到伤害 if (target.Distance(skillAnalysis.suitableUnits[i].mapGrid) <= skillAnalysis.battleSkill.rangeRadius) { skillResults.Add(BattleCalculator.Instance.CalcSingle(this, skillAnalysis.suitableUnits[i], skillAnalysis.battleSkill)); } } //产生使用技能的动作 if (actions != null) { BattleHeroSkillAction action = new BattleHeroSkillAction(this, skillAnalysis.battleSkill.skillID); action.skillResult = skillResults.ToArray(); actions.Add(action); } //产生伤害 for (int i = 0; i < skillResults.Count; ++i) { skillResults[i].battleUnit.AcceptSkillResult(skillResults[i].syncAttribute, actions); } }
//使用技能 private IEnumerator PlaySkillAction(BattleHeroSkillAction action) { if (action == null) { UtilityHelper.LogError("Error BattleHeroSkillAction"); yield break; } if (action.skillResult == null) { UtilityHelper.LogError("Error BattleHeroSkillAction: No skill result."); yield break; } AddBattleBeSelected(this, EGameConstL.Color_Cyan); for (int i = 0; i < action.skillResult.Length; ++i) { if (action.skillResult[i].battleUnit != null && action.skillResult[i].battleUnit.battleUnitRenderer != null) { AddBattleBeSelected(action.skillResult[i].battleUnit.battleUnitRenderer, EGameConstL.Color_Yellow); yield return(EGameConstL.WaitForHalfSecond); action.skillResult[i].battleUnit.battleUnitRenderer.RefreshAttribute(action.skillResult[i].syncAttribute); } } // yield return EGameConstL.WaitForTouchedScreen; ClearAllSelectedBattleUnit(); }
//使用技能 private void UseSkill(List <BattleAction> actions) { int skillID = 0; BattleHeroSkillResult skillResult = BattleCalculator.Instance.CalcSingle(this, targetBattleUnit, skillID); if (actions != null) { BattleHeroSkillAction action = new BattleHeroSkillAction(this, skillID); action.skillResult = new BattleHeroSkillResult[1] { skillResult }; actions.Add(action); } if (skillResult != null) { skillResult.battleUnit.AcceptSkillResult(skillResult.syncAttribute, actions); } }
//使用技能 private IEnumerator PlaySkillAction(BattleHeroSkillAction action) { if (action == null) { UtilityHelper.LogError("Error BattleHeroSkillAction"); yield break; } if (action.skillResult == null) { UtilityHelper.LogError("Error BattleHeroSkillAction: No skill result."); yield break; } UpdateRenderState(BattleUnitRenderState.Action); for (int i = 0; i < action.skillResult.Length; ++i) { if (action.skillResult[i].battleUnit != null && action.skillResult[i].battleUnit.battleUnitRenderer != null) { action.skillResult[i].battleUnit.battleUnitRenderer.UpdateRenderState(BattleUnitRenderState.Selected); yield return(EGameConstL.WaitForHalfSecond); action.skillResult[i].battleUnit.battleUnitRenderer.OnSkillDamage(action.skillResult[i]); action.skillResult[i].battleUnit.battleUnitRenderer.RefreshAttribute(action.skillResult[i].syncAttribute); } } UpdateRenderState(BattleUnitRenderState.Normal); for (int i = 0; i < action.skillResult.Length; ++i) { if (action.skillResult[i].battleUnit != null && action.skillResult[i].battleUnit.battleUnitRenderer != null) { action.skillResult[i].battleUnit.battleUnitRenderer.UpdateRenderState(BattleUnitRenderState.Normal); } } }
//使用技能 public void UseSkill(List <BattleAction> actions, BattleUnit target, int skillID) { if (target == null) { UtilityHelper.LogError("Use skill error, none target"); return; } BattleHeroSkillResult skillResult = BattleCalculator.Instance.CalcSingle(this, target, skillID); if (actions != null) { BattleHeroSkillAction action = new BattleHeroSkillAction(this, skillID); action.skillResult = new BattleHeroSkillResult[1] { skillResult }; actions.Add(action); } if (skillResult != null) { skillResult.battleUnit.AcceptSkillResult(skillResult.syncAttribute, actions); } }