/// <summary> /// 释放方向技能 /// </summary> /// <param name="self"></param> /// <param name="spellSkill"></param> /// <param name="point"></param> public static void SpellWithDirect(this SpellComponent self, SkillAbility spellSkill, Vector3 point) { if (!self.Enable) { return; } if (self.CurSkillConfigId != 0) { return; } if (!spellSkill.CanUse()) { return; } self.CurSkillConfigId = spellSkill.ConfigId; var nowpos = self.GetParent <CombatUnitComponent>().unit.Position; point = new Vector3(point.x, nowpos.y, point.z); var Rotation = Quaternion.LookRotation(point - nowpos, Vector3.up); self.Para = new SkillPara(); self.Para.Position = point; self.Para.Rotation = Rotation; self.Para.From = self.GetParent <CombatUnitComponent>(); self.Para.Ability = spellSkill; self.GetSkill().LastSpellTime = TimeHelper.ServerNow(); self.PlayNextSkillStep(0); }
/// <summary> /// 释放对目标技能 /// </summary> /// <param name="self"></param> /// <param name="spellSkill"></param> /// <param name="targetEntity"></param> public static void SpellWithTarget(this SpellComponent self, SkillAbility spellSkill, CombatUnitComponent targetEntity) { if (!self.Enable) { return; } if (self.CurSkillConfigId != 0) { return; } if (!spellSkill.CanUse()) { return; } self.CurSkillConfigId = spellSkill.ConfigId; var nowpos = self.GetParent <CombatUnitComponent>().unit.Position; var nowpos2 = targetEntity.unit.Position; if (Vector2.Distance(new Vector2(nowpos.x, nowpos.z), new Vector2(nowpos2.x, nowpos2.z)) > spellSkill.SkillConfig.PreviewRange[0]) { return; } self.Para = new SkillPara(); self.Para.From = self.GetParent <CombatUnitComponent>(); self.Para.Ability = spellSkill; self.Para.To = targetEntity; self.GetSkill().LastSpellTime = TimeHelper.ServerNow(); self.PlayNextSkillStep(0); }
/// <summary> /// 释放对点技能 /// </summary> /// <param name="self"></param> /// <param name="spellSkill"></param> /// <param name="point"></param> public static void SpellWithPoint(this SpellComponent self, SkillAbility spellSkill, Vector3 point) { if (!self.Enable) { return; } if (self.CurSkillConfigId != 0) { return; } if (!spellSkill.CanUse()) { return; } self.CurSkillConfigId = spellSkill.ConfigId; var nowpos = self.GetParent <CombatUnitComponent>().unit.Position; if (Vector2.Distance(new Vector2(nowpos.x, nowpos.z), new Vector2(point.x, point.z)) > spellSkill.SkillConfig.PreviewRange[0]) { var dir = new Vector3(point.x - nowpos.x, 0, point.z - nowpos.z).normalized; point = nowpos + dir * spellSkill.SkillConfig.PreviewRange[0]; } self.Para = new SkillPara(); self.Para.Position = point; self.Para.From = self.GetParent <CombatUnitComponent>(); self.Para.Ability = spellSkill; self.GetSkill().LastSpellTime = TimeHelper.ServerNow(); self.PlayNextSkillStep(0); }