1

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

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

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

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

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

4

3 回答 3

3

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

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

  • 斯科特(花栗鼠物理学家)
于 2011-03-12T17:01:34.207 回答
1

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

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

于 2011-03-11T18:52:15.837 回答
0

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

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

于 2011-03-11T18:35:50.883 回答