Libgdx Box2D改变了Bodys Fixture的形状

时间:2014-05-29 07:19:44

标签: java libgdx box2d shape

对于libgdx box2d的游戏,我希望能够Player 蹲伏。蹲伏应该将其Fixture更改为1 * 1m的hitbox而不是0.5 * 2m的hitbox。 一种可能性是存储2 Body s,一个用于正常,一个用于蹲伏。然后,如果Player想要蹲下,我可以从Body中移除第一个World并添加第二个Body,但这种方式似乎很复杂。 是否有更容易的可能性?

感谢

1 个答案:

答案 0 :(得分:1)

正如你所说,解决这个问题的一种方法是让两个身体都存在。

具体来说,您可以在相应的灯具上设置Filters。然后,您将可以使用filters替换“免除”/“包含”相应的碰撞。

请注意,正如setFilterData的JavaDoc所说:

  

设置联系人过滤数据。这不会更新联系人,直到   当父母身体处于活动状态并且清醒时的下一个步骤。这个   自动调用Refilter。

有关详细信息,请参阅box2d manual中的 9.5 Contact Filtering 部分(适用于C ++实现,但应该足够清晰,以便了解整体情况),以及上述内容Filters JavaDoc


编辑:关于评论 - 对于奖励,您还可以实际设置"unused" body to sleep

关于Mass,因为你没有提到它我假设你只使用box2d进行碰撞

但如果情况并非如此 - 那么,您必须检查模拟中的作用并进行相应调整。例如 - 一个“更宽”的矩形(即“站立”命中箱)在四肢击中时可能会获得更大的旋转动量。

在“大众”案例中,您还应考虑使用联合,例如一个WeldJoint来“同步”你的两个hitbox。