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

C++ - Easily manage potentially infinite instances (bullets for example)

本文关键字:项目 符号 实例 无限 管理 C++-      更新时间:2023-10-16

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

如果您想遍历所有项目符号并对它们执行某些操作(如移动),那么std::vector是最佳默认选择。

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

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

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