/// <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); } }