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

时间:2014-08-27 22:34:05

标签: c++ object

我想知道是否有一种简单的方法来处理对象的潜在无限实例,在这种情况下是子弹。由于我的游戏中的玩家可以连续射击,并且屏幕上有很多敌人,很有可能会有超过100个“子弹”物体的实例,如果我减慢子弹速度和增加速度,则会增加10倍。火。我是否需要将它们保存在动态数组(例如std :: vector)中并逐个移动它们,还是有一种更简单的方法可以控制它们而不会出现严重的延迟/延迟?

2 个答案:

答案 0 :(得分:1)

如果你想遍历所有子弹并对它们做一些事情(比如移动),那么std::vector是最好的默认选择。

答案 1 :(得分:1)

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

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

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