Java Libgdx Box2D更改车身固定装置的形状

Java Libgdx Box2D更改车身固定装置的形状,java,libgdx,box2d,shape,Java,Libgdx,Box2d,Shape,对于libgdx中带有box2d的游戏,我希望能够让玩家 蜷缩蹲姿应将其固定装置更改为1*1m的击球盒,而不是0.5*2m的击球盒。 一种可能是存储2个身体,一个用于正常,一个用于蹲着。然后,如果玩家想要蹲下,我可以从世界中移除第一个身体,然后添加第二个身体,但这种方式对于如此简单的任务来说似乎很复杂。 有没有更容易做到这一点的可能性 谢谢你所说的,解决这个问题的一个办法就是让两个身体都在场 具体来说,您可以在相应的装置上设置。然后,您将能够使用替代选项“豁免”/“包括”相应的碰撞 请注意,正如

对于
libgdx
中带有
box2d
的游戏,我希望能够让
玩家

蜷缩蹲姿应将其
固定装置
更改为1*1m的击球盒,而不是0.5*2m的击球盒。
一种可能是存储2个身体,一个用于正常,一个用于蹲着。然后,如果
玩家想要蹲下,我可以从
世界中移除第一个
身体
,然后添加第二个
身体
,但这种方式对于如此简单的任务来说似乎很复杂。 有没有更容易做到这一点的可能性


谢谢你所说的,解决这个问题的一个办法就是让两个身体都在场

具体来说,您可以在相应的装置上设置。然后,您将能够使用替代选项“豁免”/“包括”相应的碰撞

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

设置联系人筛选数据。这将不会更新联系人,直到 下一个时间步,当任一父体处于活动状态且清醒时。这 自动调用Refilter

更多信息,请参阅第9.5部分(从C++实现中获得的接触过滤,但应该足够清楚,以便获得全局图片),以及前面提到的


编辑:关于评论-为了奖励,您还可以实际设置

关于
质量
,因为您没有提到它,所以我假设您仅将box2d用于碰撞

但是如果不是这样的话,那么你必须检查一下你的模拟中的工作原理,并进行相应的调整。例如,“较宽”的矩形(即“站立”的点击框)在击中末端时可能会收到较大的旋转动量


在“质量”的情况下,你也应该考虑使用一个关节,例如A来“同步”你的两个希特勒盒。

你的意思是,我同时拥有<代码>正文< /代码> s“活动”,但是一个有冲突<代码>过滤器< /> >,它过滤掉所有的冲突,而另一个不使用过滤器。如果我切换,我只切换过滤器?但是具有相同质量和体积(在本例中仅为2D面)的两个
主体
s是否具有相同的物理特性,以便模拟Box2D将返回相同的结果?@Springrbua:基本上,是的。我编辑了答案以解决您的其他问题。谢谢您的编辑。“让身体进入睡眠状态”将是我所需要的。然后,当一名球员蹲下时,我可以设置碰撞过滤器以及另一个身体的“睡眠”标志,并重新激活该标志+将其设置为当前位置。我不会让球员轮换,所以这没有问题。我将使用Box2D来处理所有类型的物理问题,“跳跃”运动的原因等等^^