C++-轻松管理潜在的无限实例(例如项目符号)
C++ - Easily manage potentially infinite instances (bullets for example)
我想知道是否有一种简单的方法可以处理对象的无限实例,在这种情况下是一个项目符号。由于我的游戏中的玩家可以连续射击,而且屏幕上同时有很多敌人,所以很有可能会有超过100个"子弹"对象,如果我放慢子弹速度并提高射速,则会增加10倍。我需要将它们保存在一个动态数组中(例如std::vector)并逐个移动吗?或者有没有一种更简单的方法可以在没有严重滞后/延迟的情况下控制它们?
如果您想遍历所有项目符号并对它们执行某些操作(如移动),那么std::vector
是最佳默认选择。
如果这是像机关枪或手枪这样的非导弹武器,您应该重新考虑为每颗子弹生成一个对象的系统。处理这类事情的标准方法是对每个镜头进行光线投射,检查第一次(或多次)碰撞,并立即处理(或在一些专业游戏中,延迟处理)。这通常伴随着某种枪口闪光,这就完成了幻觉。
对于导弹武器,你肯定需要生成物体并跟踪它们,因为投射物足够慢,可以躲避、射击等。在这种情况下,请使用Wojtek建议的std::vector
。
Game Dev SE有很多关于FPS设计的有用读物。祝你好运
相关文章:
- 在 Mac 上使用 CMAKE 将 FFTW 和 FFTWPP 链接到项目中时未定义的符号
- CMake 生成的 MSVC 项目找不到符号,即使为其相关 dll 正确生成了 lib 文件也是如此
- MacOS 上的 Xcode 11 项目不在一个函数中使用 sin 和 cos:未定义的符号"___sincosf_stret"
- LD:尝试编译项目时找不到架构x86_64符号
- 在OSx:ld上使用CMake构建C++项目:找不到体系结构x86_64的符号
- 简单的cmake项目,在Windows上使用nmake构建没有调试符号
- 项目符号 3 动力学不适用于非球体
- Qt Creator项目打破:"找不到建筑x86_64符号"
- 如何链接项目符号库(来自FindBullet.cmake)?
- 在项目符号中使用"mass"
- 富文本编辑器--创建和维护项目符号列表时的问题
- 将项目符号包含目录与 cmake 链接
- 带有 OpenGL 的项目符号调试抽屉
- 我在解释 N5.5.3/5 第 4140 段中的项目符号 (5.2.1.1) 时遇到一些困难
- GDB 断点未停止程序(项目符号物理库中的断点)
- 项目符号列表 c++
- SFML中项目符号生成错误
- C++-轻松管理潜在的无限实例(例如项目符号)
- 精灵和项目符号不移动C++
- 如何在项目符号中设置碰撞对象的颜色