public SkillCasterData clone() { SkillCasterData skillcastdata = new SkillCasterData(); skillcastdata.castRole = castRole; skillcastdata.beatonRoles = beatonRoles; skillcastdata.skilldata = skilldata; return skillcastdata; }
public void SetTargetPos(GameObject targetRole, SkillCasterData skilldata) { skillcastdata = skilldata; tragetfightrole = targetRole.GetComponent<DBaseFightRole>(); if (tragetfightrole != null) startFollow = true; //DBaseFightRole role = targetRole.GetComponent<DBaseFightRole>(); // iTween.MoveTo(gameObject, iTween.Hash("position", role.roleModel.transform.position + Vector3.up, "easeType", "easeInOutExpo", "time",0.7f,"delay", .1, "oncomplete", "showHitMovie")); }
public void Begin(Vector3?preBeginPos, Vector3?preBeginDir, Vector3?preEndPos, bool isSync, EntityBase target) { if (_executed == true) { return; } _executed = true; _timer = 0; SkillPreData preData = new SkillPreData(); preData.preBeginPos = preBeginPos; preData.preBeginDir = preBeginDir; preData.preEndPos = preEndPos; SkillCasterData casterData = new SkillCasterData(); casterData.roleId = _caster.roleId; casterData.roleType = CONST_ENTITY_TYPE.MAIN_ROLE; casterData.oriPos = _caster.position; casterData.oriDir = _caster.forward; casterData.oriCenter = _caster.centerPos; SkillTargetData targetData = new SkillTargetData(); if (target != null) { targetData.roleId = target.roleId; targetData.oriPos = target.position; targetData.oriCenter = target.centerPos; } for (int i = 0; i < _spList.Count; ++i) { SkillProgress sp = _spList[i]; sp.SetSkillProgressData(_lv, casterData, preData, targetData, isSync); } Update(0f); }
public void showBeatonBySkill(SkillCasterData casterdata) { DRoleData castRoledata = casterdata.castRole.GetComponent<DBaseFightRole>().roledata; //攻击技能才能闪避,如果是 加buff 的 不能闪避 if (casterdata.skilldata.isAttackSkill() && !FightCalculateTool.checkIsHitted(castRoledata, roledata)) { //闪避了 showDogeCritEffect(EEffectType.Dodge); return; } if (casterdata != null && casterdata.skilldata != null) { BeatonData beatdata; for (int i = 0; i < casterdata.skilldata.beatonDatas.Count; i++) { beatdata = casterdata.skilldata.beatonDatas[i]; if(casterdata.skilldata.isAttackSkill()) StartCoroutine(beantonBlood(castRoledata, casterdata.skilldata, beatdata.beatonTime)); if (isDead) break; StartCoroutine(beatonToBackOrFly(beatdata)); if(i==0) StartCoroutine(addBuffByBeaton(casterdata.skilldata, beatdata.beatonTime)); } //animatorControl.changeToState(casterdata.skilldata.animatorBeatonClip); } }
//使用技能发动攻击 public bool useSkill(DSkillBaseData baseSkilldata) { if (!canUseSkillNow()) return false; if (baseSkilldata != null) { GameObject firstenemy = FightRoleManager._instance.findAttackEnemy(this, EAttackStragety.EAttackStragety_Nearest, isAttackEnemy(baseSkilldata)); if (firstenemy != null) { isCasteringSkill = true; casterdata = new SkillCasterData(); casterdata.castRole = gameObject; casterdata.skilldata = baseSkilldata; float dist = FightRoleManager._instance.getFightRoleDistance(this, firstenemy.GetComponent<DBaseFightRole>()); roleModel.transform.LookAt(firstenemy.GetComponent<DBaseFightRole>().roleModel.transform, Vector3.up); if (skillManager != null) { skillManager.useSkill(baseSkilldata); } if (dist > DefaultSkillParam.PathFindingDist)//当距离大于可自动寻路距离,不作攻击,只表现一下施放动作和特性 { StartCoroutine(showAttackMov()); } else if (dist > baseSkilldata.minAttackDist) { StartCoroutine(gotoEnemy()); } else { //roleModel.transform.LookAt(firstenemy.transform, Vector3.up); if (casterdata.skilldata.isNeedAppoint) { skillstep = ESkillStep.Selecting; } else { if (casterdata.skilldata.isUseMoveEff) StartCoroutine(ShowMoveEffectToEnemy(firstenemy)); else StartCoroutine(showBeantonMov()); if (casterdata.skilldata.isShakeCamera) Invoke("shakeCamera", casterdata.skilldata.shakeTime); StartCoroutine(showAttackMov()); } } } else { if (skillManager != null) { skillManager.useSkill(baseSkilldata); } isCasteringSkill = true; casterdata = new SkillCasterData(); casterdata.castRole = gameObject; casterdata.skilldata = baseSkilldata; StartCoroutine(showAttackMov()); return true; } } return false; }
public void SetTargetPos(Vector3 targetpos, SkillCasterData skilldata) { skillcastdata = skilldata; iTween.MoveTo(gameObject, iTween.Hash("position", targetpos, "easeType", "easeInOutExpo", "delay", .1, "time",0.5f,"oncomplete","destroyeffect")); }