Exemplo n.º 1
0
        /// <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);
        }
Exemplo n.º 2
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);
        }
Exemplo n.º 3
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);
        }