コード例 #1
0
ファイル: Railgun.cs プロジェクト: WindyDarian/Art-of-Destiny
        /// <summary>
        /// 开始通道施放的动作
        /// </summary>
        public override void StartChannellingAction()
        {
            ParticleLine k = pl;

            //pl = (ParticleLine)GameWorld.Content.Load<ParticleLine>(@"ParticleEffectTypes\ParticleLines\Railgun").Clone();
            pl           = (ParticleLine)GameWorld.Content.Load <ParticleLine>(EffectLine).Clone();
            pl.Origin    = MargedUnit.SkillPosition(SkillPointNum);
            pl.Direction = MargedUnit.Face;
            GameWorld.AddParticleShape(pl);
        }
コード例 #2
0
        /// <summary>
        /// 技能行为发生时的动作
        /// </summary>
        public override void SkillAction()
        {
            int     n = (int)AODGameLibrary.Helpers.RandomHelper.RandomInt(0, 7);
            Vector3 m;

            if (MargedUnit.Target.Position - MargedUnit.SkillPosition(n) != Vector3.Zero)
            {
                m = Vector3.Normalize(MargedUnit.Target.Position - MargedUnit.SkillPosition(n));
            }
            else
            {
                m = MargedUnit.Face;
            }

            ParticleLine pl;

            pl = (ParticleLine)GameWorld.Content.Load <ParticleLine>(EffectLine).Clone();

            pl.Origin    = MargedUnit.SkillPosition(n);
            pl.Direction = m;
            GameWorld.AddParticleShape(pl);
            pl.Flash();

            Barrel b = new Barrel(MargedUnit.SkillPosition(n), m, FloatValues[0], FloatValues[1], FloatValues[2]);

            foreach (VioableUnit u in GameWorld.GameItemManager.BoundingCollection)
            {
                if (u != null && u != MargedUnit)
                {
                    if (Vector3.Distance(u.Position, MargedUnit.Position) < Range)
                    {
                        if (Collision.IsCollided(u, b))
                        {
                            u.GetDamage(Damage.CreateFromDamage(Damage.CreateFromDamage(Damage, MargedUnit), MargedUnit));
                            if (!u.Heavy)
                            {
                                u.GetImpulse(m * FloatValues[3]);
                            }
                        }
                    }
                }
                Color c = Color.BlueViolet;
                c.A = (byte)(0.1f * c.A);
                GameWorld.ScreenEffectManager.Blink(c, 0.2f);
            }
        }