C++ C++;-轻松管理潜在的无限实例(例如项目符号)

C++ C++;-轻松管理潜在的无限实例(例如项目符号),c++,object,C++,Object,我想知道是否有一种简单的方法来处理对象的潜在无限实例,在本例中是一个项目符号。由于我游戏中的玩家可以连续射击,同时屏幕上有许多敌人,因此很有可能会有超过100个“子弹”对象实例,如果我降低子弹速度并增加射击速度,则会增加10倍。我是否需要将它们保存在一个动态数组中(例如std::vector)并逐个移动它们,或者是否有一种更简单的方法可以在没有严重延迟/延迟的情况下控制它们?如果您希望遍历所有项目符号并对其进行处理(例如移动)然后,最好的默认选择是std::vector。如果这是机关枪或手枪等非

我想知道是否有一种简单的方法来处理对象的潜在无限实例,在本例中是一个项目符号。由于我游戏中的玩家可以连续射击,同时屏幕上有许多敌人,因此很有可能会有超过100个“子弹”对象实例,如果我降低子弹速度并增加射击速度,则会增加10倍。我是否需要将它们保存在一个动态数组中(例如std::vector)并逐个移动它们,或者是否有一种更简单的方法可以在没有严重延迟/延迟的情况下控制它们?

如果您希望遍历所有项目符号并对其进行处理(例如移动)然后,最好的默认选择是
std::vector

如果这是机关枪或手枪等非导弹武器,你应该重新考虑为每颗子弹生成一个物体的系统。处理这类事情的标准方法是对每个镜头进行光线投射,检查第一次(或多次)碰撞,并立即处理(或在某些专业游戏中,延迟处理)。这通常伴随着某种口吻闪光,这就完成了幻觉

对于导弹武器,你肯定需要生成物体并跟踪它们,因为射弹的速度足够慢,可以避免、射击等。在这种情况下,使用Wojtek建议的
std::vector


有很多关于FPS设计的有用读物。祝你好运

100很难说是“无限的”,这取决于你将如何使用它们。需要通过一个特定的ID或什么来找到一个吗?将它们放入
std::map
O(1)
查找时间。需要调整大小、排序等吗?把它们放在
std::vector
@Cyber:我确信
std::map
O(logn)
我的错误,我的意思是
std::unordered_map
@T.C.我的意思是,系统可以创建计算机可以处理的尽可能多的子弹(甚至更多),只是子弹移动时间意味着屏幕上一次大概不会超过100次。根据我有限的理解,光线投射用于FPS游戏——我正在制作一个2D拍摄,就像太空入侵者一样,但更具破坏性。然而,子弹的数量仍然很高。哦,我明白了,是的,那么向量或链表就是最好的选择