对于简单的碰撞检测,Chipmunk是否过度杀伤?

时间:2011-03-11 18:11:17

标签: optimization chipmunk

我正在开发一个物理非常简单的游戏。我只需要检测球(点)何时撞到墙壁(线段)。没有重力,没有摩擦,碰撞是完全有弹性的。

我已经编写了碰撞检测代码,但我即将对该项目进行一些重大更改,因此有机会用Chipmunk物理库替换它。这是个好主意吗?

一方面,Chipmunk将比我自己的代码进行更多的测试和优化,而且我不需要做维护它的工作。

另一方面,在我的情况下,花栗鼠的性能可能会降低,因为它的设计目的是支持我不会使用的很多功能。

我希望更熟悉花栗鼠的人能够免费分析它或者自己阅读代码来做出这个决定。

3 个答案:

答案 0 :(得分:3)

花栗鼠在这里唯一真正的优势是,如果你将球(或许多球)碰到许多墙壁,因为它使用空间索引来仅检查彼此靠近的物体的碰撞。这意味着您可以扩展到数百或数千个对象而不会减慢爬行速度,但如果场景中只有十几个对象,则无法提供真正的优势。

听起来你到目前为止所实现的功能可以满足您的需求。 “如果它没有破坏不修复它”是一个很好的经验法则。另一方面,在Chipmunk中实现同样的事情真的很容易。如果你想要经验和可扩展性的可能性来换取依赖的麻烦,那我就去吧。

  • 斯科特(花栗鼠物理学家)

答案 1 :(得分:1)

我发现Chipmunk非常容易使用,我会推荐给任何开始2D项目的人。我不能在不知道你的代码的情况下回答性能问题。我知道它使用空间哈希来确定冲突,它最终可能会比你的代码做更少的碰撞测试。 (另一方面,如果球和墙的数量非常少,这可能不是问题。)

它是开源的,所以另一种可能性是使用花栗鼠,但删除你不需要的所有功能 - 重力,摩擦力,惯性矩等。再次,很难说这是一个不错的选择确切地知道你已经实施了什么。

答案 2 :(得分:0)

这真的取决于你想要它做什么。我没有使用过花栗鼠本身,但听起来我觉得你并不是真的需要一个完整的物理库。

现在,如果你有计划将它扩展到一个球和一个墙,这样你用于扩展的物理学,那么现在就一个简单的问题学习它现在可能是一个好主意。总的来说,除非你想要学习物理库或计划提高物理计算类型的复杂性/数量,否则我会说你自己做。