我正在用 C++(一个多向 2d 空间射击游戏)编写一个类似街机的小游戏,我正在完成碰撞检测部分。
这是我组织它的方式(我只是编造它,所以它可能是一个糟糕的系统):
每艘船都由圆形组件组成——每艘船中组件的数量是任意的(更多的组件,更多的 CPU 周期)。我有一个 maxComponent 距离,我在创建船时计算它,这基本上是我可以从船中心到最远组件边缘绘制的最长线。我跟踪屏幕上的东西并使用这个 maxComponentDistance 来查看它们是否足够接近以发生碰撞。
如果它们距离很近,我会开始检查不同船只的组件是否相交。这就是我的效率问题所在。
我有一个组件相对于船中心的 (x,y) 位置,但它没有考虑船当前的旋转方式。我保持它们是相对的,因为我不想在每次船移动时都重新计算组件。所以我有一个旋转计算的小公式,我返回一个二维向量,对应于相对于船舶中心的旋转考虑位置。
碰撞检测在 GameEngine 中,它使用 2d 向量。我的问题是关于返回类型。我应该在每次调用该函数时创建并返回一个二维向量对象,还是应该为该组件对象提供一个额外的私有二维向量变量,在调用函数时编辑私有变量,并返回指向该对象的指针?
我不确定内存分配与永久、可编辑、私有变量的效率。我知道也必须为私有变量分配内存,但不是每次检查冲突时,只有在创建新组件时。组件在我的环境中不是恒定的,因为它们在船被摧毁时被删除。
这是我的主要困境。我也很感激任何关于我的实际碰撞检测系统设计的指针。这是我第一次破解它(也许应该读一下)
提前致谢。