| | |
| | | switch (skillConfig.castMode) |
| | | { |
| | | case SkillCastMode.Self: |
| | | CastImpl(); |
| | | CastImpl(OnAttackFinish); |
| | | break; |
| | | case SkillCastMode.Enemy: |
| | | CastToEnemy(); |
| | |
| | | () => |
| | | { |
| | | // 回到原来的位置 |
| | | MoveToTarget(battleField.GetTeamNode(caster.Camp, caster.teamHero.positionNum), Vector2.zero, moveTime, () => |
| | | { |
| | | TurnBack(null, 1f); |
| | | caster.motionBase.PlayAnimation(MotionName.idle, true); |
| | | OnAllAttackMoveFinished(); |
| | | }); |
| | | MoveToTarget(battleField.GetTeamNode(caster.Camp, caster.teamHero.positionNum), Vector2.zero, moveTime, |
| | | OnAttackFinish); |
| | | } |
| | | , -1f); |
| | | }); |
| | |
| | | return; |
| | | } |
| | | |
| | | var mainHurt = tagUseSkillAttack.HurtList[0]; |
| | | int mainTargetPosNum = BattleUtility.GetMainTargetPositionNum(caster, tagUseSkillAttack.HurtList.ToList(), skillConfig); |
| | | |
| | | BattleObject mainTarget = battleField.battleObjMgr.GetBattleObject((int)mainHurt.ObjID); |
| | | if (mainTarget == null) |
| | | { |
| | | Debug.LogError("目标为空 mainTarget == null ObjID : " + mainHurt.ObjID); |
| | | OnSkillFinished(); |
| | | return; |
| | | } |
| | | BattleCamp battleCamp = skillConfig.TagFriendly != 0 ? caster.Camp : caster.GetEnemyCamp(); |
| | | |
| | | MoveToTarget(mainTarget.heroRectTrans, new Vector2(skillConfig.CastDistance, 0), moveTime, () => |
| | | RectTransform targetTrans = battleField.GetTeamNode(battleCamp, mainTargetPosNum); |
| | | |
| | | MoveToTarget(targetTrans, new Vector2(skillConfig.CastDistance, 0), moveTime, () => |
| | | { |
| | | // 到位置转身(不一定非要转身 但是流程要写) |
| | | TurnBack(() => |
| | |
| | | () => |
| | | { |
| | | // 回到原来的位置 |
| | | MoveToTarget(battleField.GetTeamNode(caster.Camp, caster.teamHero.positionNum), Vector2.zero, moveTime, () => |
| | | { |
| | | TurnBack(null, 1f); |
| | | caster.motionBase.PlayAnimation(MotionName.idle, true); |
| | | OnAllAttackMoveFinished(); |
| | | }); |
| | | MoveToTarget(battleField.GetTeamNode(caster.Camp, caster.teamHero.positionNum), Vector2.zero, moveTime, |
| | | OnAttackFinish); |
| | | } |
| | | , -1f); |
| | | }); |
| | |
| | | () => |
| | | { |
| | | // 回到原来的位置 |
| | | MoveToTarget(battleField.GetTeamNode(caster.Camp, caster.teamHero.positionNum), Vector2.zero, moveTime, () => |
| | | { |
| | | TurnBack(null, 1f); |
| | | caster.motionBase.PlayAnimation(MotionName.idle, true); |
| | | OnAllAttackMoveFinished(); |
| | | }); |
| | | MoveToTarget(battleField.GetTeamNode(caster.Camp, caster.teamHero.positionNum), |
| | | Vector2.zero, moveTime, OnAttackFinish); |
| | | } |
| | | , -1f); |
| | | }); |
| | | }, -1f); |
| | | }); |
| | | } |
| | | |
| | | protected void OnAttackFinish() |
| | | { |
| | | TurnBack(null, 1f); |
| | | OnAllAttackMoveFinished(); |
| | | caster.motionBase.PlayAnimation(MotionName.idle, true); |
| | | } |
| | | |
| | | |
| | |
| | | skillConfig, |
| | | tagUseSkillAttack |
| | | ); |
| | | if (skillEffect != null) |
| | | // if (skillEffect != null) |
| | | { |
| | | skillEffect.Play(OnHitTargets); |
| | | } |
| | |
| | | /// <param name="times"></param> |
| | | public virtual void OnMiddleFrameStart(int times) |
| | | { |
| | | if (skillEffect != null) |
| | | // if (skillEffect != null) |
| | | { |
| | | skillEffect.OnMiddleFrameStart(times); |
| | | } |
| | |
| | | |
| | | public virtual void OnMiddleFrameEnd(int times, int hitIndex) |
| | | { |
| | | if (skillEffect != null) |
| | | // if (skillEffect != null) |
| | | { |
| | | skillEffect.OnMiddleFrameEnd(times, hitIndex); |
| | | } |
| | |
| | | /// </summary> |
| | | public virtual void OnFinalFrameStart() |
| | | { |
| | | |
| | | // if (skillEffect != null) |
| | | { |
| | | skillEffect.OnFinalFrameStart(); |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | |
| | | /// </summary> |
| | | public virtual void OnFinalFrameEnd() |
| | | { |
| | | // if (skillEffect != null) |
| | | { |
| | | skillEffect.OnFinalFrameEnd(); |
| | | } |
| | | |
| | | HandleDead(); |
| | | } |
| | | |
| | | |
| | |
| | | |
| | | OnHitEachTarget(_hitIndex, target, hurt); |
| | | } |
| | | HandleDead(); |
| | | |
| | | } |
| | | |
| | | |
| | |
| | | |
| | | public virtual void ForceFinished() |
| | | { |
| | | skillEffect?.ForceFinished(); |
| | | isFinished = true; |
| | | |
| | | while (packList.Count > 0) |
| | | { |
| | | var pack = packList[0]; |
| | | packList.RemoveAt(0); |
| | | |
| | | if (pack is CustomHB426CombinePack) |
| | | { |
| | | var combinePack = pack as CustomHB426CombinePack; |
| | | if (combinePack.startTag.Tag.StartsWith("Skill_")) |
| | | { |
| | | BattleDebug.LogError("other skill casting " + combinePack.startTag.Tag); |
| | | otherSkillAction = combinePack.CreateSkillAction(); |
| | | |
| | | // 强制结束其他技能 |
| | | otherSkillAction.ForceFinish(); |
| | | return; |
| | | } |
| | | } |
| | | PackageRegedit.Distribute(pack); |
| | | } |
| | | } |
| | | |
| | | public void OnSkillFinished() |