我为我的语言的不精确道歉,我对编程相当陌生。
假设我想在SFML中创建一个粒子效果。我目前的解决方案是创建我的粒子类的多个示例,然后使用类中的一个方法更新它们,每个帧将虚拟“相机”的更新位置作为输入,一次一个效果很好。不过,我一次制作几个有困难,因为在我目前的实现中,我必须手动创建每个粒子,然后在计数器达到足够高的值时覆盖每个粒子。我如何创建,更新,绘制,以及总体上,一次跟踪许多示例?这可能做到吗?或者我应该重新考虑我的实现?
我目前拥有的,用英语伪代码表示:
Create a particle object()
while true{
Update the particle instance's position(given camera position)
Draw the particle instance
}
我想做的(在伪代码中),但我不确定如何在C++中实现:
while true{
Create a new particle object() // note: the particle objects already delete themselves after they have been updated a certain number of times, so creating new objects does not pose a threat to memory
Update ALL particle instances' positions(given the camera's updated position)
Draw ALL particle instances
}
我在C++中有:
RenderWindow window(windowSize);
SmokeParticle smokeParticleInstance(cameraX, cameraY);
while true{
window.draw(smokeParticleInstance.update(cameraX, cameraY)); // the update method returns a sprite object that the RenderWindow object knows how to draw
}
1条答案
按热度按时间osh3o9ms1#
要同时创建、更新、绘制和跟踪多个粒子示例,可以使用vector或列表等容器来保存所有粒子对象。然后,在主循环中,可以遍历容器,更新每个粒子的位置,并将其绘制在屏幕上。