Ive создавал систему частиц в XNA, и я пытаюсь создать два эффекта частиц. взрыв фейерверка и фейерверк фонтана.XNA Проблемы с системой частиц
Проблема, с которой я сталкиваюсь, заключается в том, что когда я добавляю новые частицы к взрыву (им делать это быстро, потому что я хочу, чтобы они все возникали одновременно) частота кадров значительно падает.
Мне было интересно, есть ли у кого-нибудь решение сделать это лучше. я видел, что в официальном примере используется метод очереди. поможет ли мне проблема, с которой я столкнулся? или он заставит программу медленнее загружаться, так как ей придется загружать все эти частицы в очередь в начале?
добавить новую частицу:
if (isActive)
{
timeSinceLastEmission += gameTime.ElapsedGameTime.Milliseconds;
if (emitterFrequency == 0 || timeSinceLastEmission >= emitterFrequency)
{
emitterFrequency = emissionInterval;
for (int i = 0; i < Math.Round(timeSinceLastEmission/emitterFrequency); i++)
{
if (particleList.Count < MaxParticles)
addParticle();
}
timeSinceLastEmission = 0;
}
}
раздаточный функцию:
public void draw(SpriteBatch spriteBatch)
{
spriteBatch.Begin();
for (int i = 0; i < particleList.Count; i++)
{
spriteBatch.Draw(particleList[i].texture,
particleList[i].position,
null,
particleList[i].color,
particleList[i].rotation,
particleList[i].origin,
particleList[i].textureScale,
SpriteEffects.None,
0);
}
spriteBatch.End();
}
любая помощь будет принята с благодарностью.
Какова ваша эмитент Частота и MaxParticles? –
различны для каждого эффекта, но эффект взрыва составляет 30 частиц и 1.0f, поэтому они все появляются в одно и то же время. – dtothef