2011-03-11 89 views
1

我正在研究一个物理非常简单的游戏。我只需要检测球(点)碰到墙(线段)时的情况。没有重力,没有摩擦,并且碰撞是完全弹性的。是Chipmunk矫枉过正的简单碰撞检测?

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

一方面,Chipmunk将比我自己的代码更加严格地测试和优化,我不必去做维护它的工作。

另一方面,也许Chipmunk在我的情况下性能会降低,因为它旨在支持很多我不会使用的功能。

我希望更熟悉Chipmunk的人会让我自己分析或阅读代码来做出这个决定。

+0

计算距离是超级容易,所以如果这是你需要的,你可能也只是你自己的代码 - 这将是比学习新的API容易得多。 – 2011-03-11 18:22:32

回答

3

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

这听起来像你到目前为止已经实现的工作对你的需求很好。 “如果没有损坏,不要修复”,这是一个很好的经验法则。另一方面,在Chipmunk中实现同样的事情也很容易。如果你想获得经验和可扩展性的可能性以换取依赖关系的麻烦,那么我猜吧。

  • 斯科特(花栗鼠物理家伙)上的点与线之间
+1

空间哈希?我卖了!你说的没错,没有解决,但我的直觉说,如果我现在不转换,我很可能会在稍后做。谢谢! – benzado 2011-03-12 18:17:49

0

它真的归结于你想要它做什么。我没有使用花栗鼠本身,但从听起来像我会说你并不真的需要一个完整的物理库。

现在,如果你有计划扩大它超越一个球,一堵墙,这样你会为扩展物理使用,那么现在学习它一个简单的问题,现在可能是一个好主意。总的来说,除非你想要学习物理图书馆或计划提高物理计算的复杂性/数量类型,否则我只是自己去做。

1

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

它是开源的,所以另一种可能性是使用Chipmunk,但删除所有你不需要的功能 - 重力,摩擦力,惯性力矩等等。同样,很难说这是一个好的选择而不知道你已经实施了什么。