Libgdx 使用box2d检测碰撞,但忽略力

Libgdx 使用box2d检测碰撞,但忽略力,libgdx,box2d,collision,Libgdx,Box2d,Collision,我正在使用libgdx和box2d来检测碰撞,但我希望检测到一些碰撞,但力不会消失 例如,我想检测角色何时与硬币碰撞,但不希望硬币影响玩家的移动 使用box2d是否可以实现这一点?如果是这样,我该怎么做呢?引自: 阅读Box2D手册中的碰撞过滤: 碰撞过滤允许您防止装置之间的碰撞。 例如,假设你制作了一个骑自行车的角色。你想要 要与地形碰撞的自行车和要碰撞的角色 使用地形,但您不希望角色与地形碰撞 自行车(因为它们必须重叠)。Box2D支持这种碰撞 使用类别和组进行筛选 Box2D支持16种碰撞

我正在使用libgdx和box2d来检测碰撞,但我希望检测到一些碰撞,但力不会消失

例如,我想检测角色何时与硬币碰撞,但不希望硬币影响玩家的移动

使用box2d是否可以实现这一点?如果是这样,我该怎么做呢?

引自:

阅读Box2D手册中的碰撞过滤:

碰撞过滤允许您防止装置之间的碰撞。 例如,假设你制作了一个骑自行车的角色。你想要 要与地形碰撞的自行车和要碰撞的角色 使用地形,但您不希望角色与地形碰撞 自行车(因为它们必须重叠)。Box2D支持这种碰撞 使用类别和组进行筛选

Box2D支持16种碰撞类别。对于每个固定装置,您可以 指定它所属的类别。您还可以指定其他 此装置可能与之冲突的类别。例如,你可以 在多人游戏中指定所有玩家不相互碰撞 其他怪物和怪物不会相互碰撞,但玩家和 怪物应该碰撞

链接到手册。(搜索筛选)
.

我不确定您想要做什么,但如果我了解您想要做什么,您可以创建一个传感器夹具类型,这个伪示例:

FixtureDef fd1 = new FixtureDef();
//fd1.friction = 0.5f;

PolygonShape pSTest = new PolygonShape();

//size you want for example:
pSTest.setAsBox(4f / PIXEL_POR_METRO, 
                1f / PIXEL_POR_METRO, 
                new Vector2(22f / PIXEL_POR_METRO, -1f / PIXEL_POR_METRO),
                0f);

fd1.shape = pSTest;
fd1.isSensor = true;

yourBody.createFixture(fd1).setUserData("yourId");
查看ContactListener接口,例如preSolve

注意传感器,这不是传感器的要求

信息

setAsBox(float hx, float hy, Vector2 center, float angle)

Parameters:
hx the half-width.
hy the half-height.
center the center of the box in local coordinates.
angle the rotation in radians of the box in local coordinates.

谢谢这就是我要找的。为了向其他人澄清,设置
BodyFixture.setSensor(true)
,“硬币”(在我的示例中)的主体将生成
begin/endContact
回调,但不会影响碰撞主体-因此“角色”只是不受影响地通过。