Когда я создаю эффекты частиц, все они имеют одинаковый узор. Они вращаются, но все они имеют одну и ту же структуру и одинаковые цветные частицы. Смотрите картину:Эффект частиц, отражающий одни и те же частицы - не рандомизация, Monogame
Это как новый ParticleEffect получает создано:
ParticleEffect p = new ParticleEffect(textures, Vector2.Zero, destination, speed);
Где textures
это Texture2D
список, VectorZero является начальное положение, и так далее.
Всякий раз, когда новый ParticleEffect
получает создан, он будет добавлен в список ParticleList
, который позже петли через все пункты и вызовы update
и draw
для каждого эффекта внутри.
Вот где частицы рандомизированы:
private Particle GenerateNewParticle()
{
Random random = new Random();
Texture2D texture = textures[random.Next(textures.Count)];
Vector2 position = EmitterLocation;
Vector2 velocity = new Vector2(
1f * (float)(random.NextDouble() * 2 - 1),
1f * (float)(random.NextDouble() * 2 - 1));
float angle = 0;
float angularVelocity = 0.1f * (float)(random.NextDouble() * 2 - 1);
Color color = new Color(
(float)random.NextDouble(),
(float)random.NextDouble(),
(float)random.NextDouble());
float size = (float)random.NextDouble();
int ttl = 20 + random.Next(40);
return new Particle(texture, position, velocity, angle, angularVelocity, color, size, ttl);
}
Пучок randoms
там, но каждый эффект по-прежнему выходит то же самое. Комментарий, если вы хотите увидеть больше кода.
Edit: Вот как частица получает обнажена
public void Draw(SpriteBatch spriteBatch)
{
Rectangle sourceRectangle = new Rectangle(0, 0, Texture.Width, Texture.Height);
Vector2 origin = new Vector2(Texture.Width/2, Texture.Height/2);
spriteBatch.Draw(Texture, Position, sourceRectangle, Color,
Angle, origin, Size, SpriteEffects.None, 0f);
}