1

我有一个带有单个 cpShape 的 cpBody,它漂浮在我的场景中,与其他物体等碰撞。我怎样才能轻松地让这个身体停留在一个地方,并像一个静止的障碍物一样呆在一个地方,这样它就不再移动但仍然与其他身体发生碰撞。

当用户点击它时,我只想阻止身体移动。这就是我问的原因。我不是花栗鼠方面的专家,但我认为这一定很容易。

4

2 回答 2

5

使用公共 API 执行此操作的方式是从空间中移除身体和形状。创建一个与旧动态体具有相同位置/旋转的新静态体。使用 cpShapeSetBody() 将 body 更改为新的静态,然后将 shape 读取到空间中。

于 2012-06-13T19:26:17.390 回答
1

您可以调用cpBodySetMassINFINITY,并强制对象与cpBodySleep. 这就是静态对象在内部实现的方式(至少在质量方面)。

编辑

我不确定您是否需要cpBodySleep在此之后打电话,但我认为打电话没有什么坏处。

修改cpBody.h放在#define CP_ALLOW_PRIVATE_ACCESS 1开头。然后从cpBody*,访问->node.idleTime并将其设置为 INFINITY。

编辑 2

上述解决方案是一个可行的解决方案,但在 SE 实践方面不是很好。最好定义一个使对象成为静态或动态的函数,这样您就可以在不禁用整个对象的私有属性的情况下调用。

于 2012-06-13T10:47:47.423 回答