Esempio n. 1
0
 /// <summary>
 /// Update时的动作
 /// </summary>
 public override void UpdateAction(GameTime gameTime)
 {
     if (pl != null)
     {
         pl.Origin    = MargedUnit.SkillPosition(SkillPointNum);
         pl.Direction = MargedUnit.Face;
     }
 }
Esempio n. 2
0
        /// <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);
        }
Esempio n. 3
0
 /// <summary>
 /// 技能行为发生时的动作
 /// </summary>
 public override void SkillAction()
 {
     MargedUnit.GetThrust(0.01f * MargedUnit.Face);
     MargedUnit.GetImpulse(FloatValues[0] * MargedUnit.Face);
     if (MargedUnit == GameWorld.CurrentStage.Player)
     {
         Color c = Color.Orange;
         c.A = (byte)(0.15f * c.A);
         GameWorld.ScreenEffectManager.Blink(c, 0.4f);
     }
 }
Esempio n. 4
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);
            }
        }
Esempio n. 5
0
        /// <summary>
        /// 技能行为发生时的动作
        /// </summary>
        public override void SkillAction()
        {
            ParticleEffect pe = new ParticleEffect(GameWorld, GameWorld.Content.Load <ParticleEffectType>(@"ParticleEffectTypes\BlueWave"), null, MargedUnit.SkillPosition(SkillPointNum), 1);
            Vector3        v  = Target.Position - MargedUnit.SkillPosition(SkillPointNum);

            damaged.Clear();
            if (v != Vector3.Zero)
            {
                direction = Vector3.Normalize(v);
            }
            else
            {
                direction = Vector3.Forward;
            }
            //pe.ReBirth();
            pes.Add(pe);
            GameWorld.AddParticleEffect(pe);
        }
Esempio n. 6
0
        /// <summary>
        /// Update时的动作
        /// </summary>
        public override void UpdateAction(GameTime gameTime)
        {
            for (int i = 0; i < pes.Count; i++)
            {
                ParticleEffect pe = pes[i];
                if (Vector3.Distance(pe.position, MargedUnit.SkillPosition(SkillPointNum)) < base.FloatValues[3])
                {
                    Vector3 p0 = pe.position;
                    float   s0 = pe.Scale;
                    pe.position += direction * FloatValues[0] * (float)gameTime.ElapsedGameTime.TotalMilliseconds;
                    pe.Scale    *= FloatValues[1] * (float)gameTime.ElapsedGameTime.TotalMilliseconds;
                    foreach (VioableUnit u in GameWorld.GameItemManager.BoundingCollection)
                    {
                        if (u.Group != MargedUnit.Group)
                        {
                            if (Collision.IsCollided(u, new Barrel(p0, pe.position, 32 * s0, 32 * pe.Scale)))
                            {
                                if (damaged.Contains(u) == false)
                                {
                                    u.GetDamage(Damage);
                                    u.GetImpulse(direction * FloatValues[2]);
                                    damaged.Add(u);
                                }
                            }
                        }
                    }
                }
                else
                {
                    pe.BeginToDie();
                    re.Add(pe);
                }
            }
            if (re.Count != 0)
            {
                damaged.Clear();
            }
            foreach (ParticleEffect pe in re)
            {
                pes.Remove(pe);
            }

            re.Clear();
        }
Esempio n. 7
0
        /// <summary>
        /// 技能行为发生时的动作
        /// </summary>
        public override void SkillAction()
        {
            Barrel b = new Barrel(MargedUnit.SkillPosition(SkillPointNum), MargedUnit.Face, 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 (DamageAll || u.Group != MargedUnit.Group)
                        {
                            if (Collision.IsCollided(u, b))
                            {
                                u.GetDamage(Damage.CreateFromDamage(Damage.CreateFromDamage(Damage, MargedUnit), MargedUnit));
                            }
                        }
                    }
                }
                Color c = Color.BlueViolet;
                c.A = (byte)(0.1f * c.A);
                GameWorld.ScreenEffectManager.Blink(c, 0.2f);
            }
        }
 /// <summary>
 /// 技能行为发生时的动作
 /// </summary>
 public override void SkillAction()
 {
     foreach (Unit u in GameWorld.GameItemManager.units)
     {
         if (u.Dead == false && u.Group != MargedUnit.Group)
         {
             GameWorld.AddNewMissile(new Missile(GameWorld, MargedUnit, u, GameWorld.Content.Load <MissileType>(MissileTypeAssetName), MargedUnit.SkillPosition(SkillPointNum)));
         }
     }
 }
Esempio n. 9
0
 /// <summary>
 /// 技能行为发生时的动作
 /// </summary>
 public override void SkillAction()
 {
     if (MargedUnit.CurrentMissileWeapon != null)
     {
         for (int i = 0; i < 3; i++)
         {
             if (MargedUnit.CurrentMissileWeapon.Num > 0)
             {
                 GameWorld.AddNewMissile(new Missile(GameWorld, MargedUnit, Target, MargedUnit.CurrentMissileWeapon.missileType, MargedUnit.SkillPosition(i % 3)));
                 if (!MargedUnit.EndlessBullets)
                 {
                     MargedUnit.CurrentMissileWeapon.Num -= 1;
                 }
             }
         }
     }
 }
Esempio n. 10
0
 /// <summary>
 /// 技能行为发生时的动作
 /// </summary>
 public override void SkillAction()
 {
     GameWorld.AddNewMissile(new Missile(GameWorld, MargedUnit, Target, GameWorld.Content.Load <MissileType>(MissileTypeAssetName), MargedUnit.SkillPosition(SkillPointNum)));
 }