使用box2d来检测碰撞,但忽略了力量

时间:2014-12-20 09:37:12

标签: libgdx box2d collision

我正在使用libgdx和box2d来检测碰撞,但我希望能够检测到一些碰撞,但不会发挥作用。

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

使用box2d甚至可以吗?如果是这样,我该怎么做呢?

2 个答案:

答案 0 :(得分:3)

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

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.

答案 1 :(得分:1)

引自:https://gamedev.stackexchange.com/a/22542

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

  

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

     

Box2D支持16种碰撞类别。对于每个夹具,你可以   指定它属于哪个类别。你还指定了其他什么   这个夹具可以碰撞的类别。例如,你可以   在多人游戏中指定所有玩家不会与每个玩家发生碰撞   其他和怪物不会相互碰撞,但是玩家和玩家   怪物应该碰撞

链接到手册here。 (搜索过滤) 。