使用迭代采样进行碰撞检测 - 我应该使用引擎(box2d)还是自己滚动?

时间:2011-04-03 11:03:08

标签: actionscript collision-detection

感谢您花时间阅读我的问题。

我正在写一个2d自上而下的射击游戏。它目前使用Box2d作为物理引擎。事实是,它并没有真正使用Box2d来实现最大潜力,仅用于碰撞检测和底层速度/旋转更新循环。任何增加真实物理的计划都会让人眼前一亮,而不是改变游戏规则。

现在我选择了Box2d因为我经历了其他2个物理引擎,他们无法处理我正在检测的碰撞类型。我正在创造几个速度非常快的“子弹”,我不希望它们能够立即击中目标。 JigLib和Flixel都有同样的问题 - 在更新帧时子弹没有重叠敌人,因此没有被检测为碰撞(即子弹通过敌人因为它们移动得很快)。

由于它的迭代碰撞采样以及实体上的SetAsBullet方法,我转移到了Box2d。而且效果很棒!但是现在Box2d也给了我麻烦 - 每秒产生几发子弹,或者同时严重降低我的fps。

所以我删除了Box2d以确认它不是渲染限制...添加了我自己的速度/旋转系统,我每秒可以发射数百颗子弹。大!但它没有任何碰撞检测。

所以问题:

1)我应该编写自己的迭代碰撞引擎吗?

2)我是否应该再试一次Box2d,或许可以通过一些调整来更快地添加新的身体?

3)是否有其他替代方案,也许是专门针对此的轻量级物理引擎?

4)您是否知道可以使用的任何其他技术或设计模式?

非常感谢你的帮助!

编辑:我应该注意,不仅有子弹,还有更大,更慢的射弹。我认为射线投射线段到射弹的先前位置,并捕捉交叉点,但这对较大的物体不起作用:(

1 个答案:

答案 0 :(得分:0)

这取决于你的情况会变得多么复杂,如果你擅长数学和物理,你可以推出一个快速的引擎,可以比你使用box2d学习更快地处理简单的碰撞,但为什么有人发明了自行车如果那里他们已经发明了很多,所以选择一个你尝试使用它,我推荐使用box2d