/// <summary> /// Update时的动作 /// </summary> public override void UpdateAction(GameTime gameTime) { if (pl != null) { pl.Origin = MargedUnit.SkillPosition(SkillPointNum); pl.Direction = MargedUnit.Face; } }
/// <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); }
/// <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); } }
/// <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); }
/// <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(); }
/// <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))); } } }
/// <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; } } } } }
/// <summary> /// 技能行为发生时的动作 /// </summary> public override void SkillAction() { GameWorld.AddNewMissile(new Missile(GameWorld, MargedUnit, Target, GameWorld.Content.Load <MissileType>(MissileTypeAssetName), MargedUnit.SkillPosition(SkillPointNum))); }