public virtual Particle CreateParticle() { var particle = new ParticleColorful(); particle.FromColor = ColorFrom; particle.ToColor = ColorTo; return(particle); }
public int Width; // длина экрана public override void ResetParticle(ParticleColorful particle) { base.ResetParticle(particle); // вызываем базовый сброс частицы, там жизнь переопределяется и все такое // а теперь тут уже подкручиваем параметры движения particle.X = Particle.rand.Next(Width); // позиция X -- произвольная точка от 0 до Width particle.Y = 0; // ноль -- это верх экрана particle.FromColor = Color.White; particle.ToColor = Color.FromArgb(0, Color.Wheat); particle.SpeedY = 1; // падаем вниз по умолчанию particle.SpeedX = Particle.rand.Next(-2, 2); // разброс влево и вправа у частиц }
public int counter; // переменная для счета частиц public override void ImpactParticle(ParticleColorful particle) { float gX = X - particle.X; float gY = Y - particle.Y; double r = Math.Sqrt(gX * gX + gY * gY); // считаем расстояние от центра точки до центра частицы if (r + particle.Radius < Radius / 2) // если частица оказалось внутри окружности { particle.Life = 0; counter++; // растет при смерти точки } }
public override void ImpactParticle(ParticleColorful particle) { float gX = X - particle.X; float gY = Y - particle.Y; double r = Math.Sqrt(gX * gX + gY * gY); // считаем расстояние от центра точки до центра частицы if (r + particle.Radius < Radius / 2) // если частица оказалось внутри окружности { // то меняем ее диапазон рассеивания цветов particle.FromColor = pColor; particle.ToColor = Color.FromArgb(0, pColor); } }
public virtual void ResetParticle(ParticleColorful particle) { particle.Life = Particle.rand.Next(LifeMin, LifeMax); particle.X = X; particle.Y = Y; particle.FromColor = Color.White; particle.ToColor = Color.FromArgb(0, Color.Wheat); var direction = Direction + (double)Particle.rand.Next(Spreading) - Spreading / 2; var speed = Particle.rand.Next(SpeedMin, SpeedMax); particle.SpeedX = (float)(Math.Cos(direction / 180 * Math.PI) * speed); particle.SpeedY = -(float)(Math.Sin(direction / 180 * Math.PI) * speed); particle.Radius = Particle.rand.Next(RadiusMin, RadiusMax); }
public Color pColor; //Цвет нашей красящей тчк public abstract void ImpactParticle(ParticleColorful particle);