使用Andengine进行碰撞过滤 - 如何进行?

时间:2014-04-23 12:16:07

标签: android box2d andengine

我正在开发基于Andengine的游戏,而且我遇到了碰撞问题。我有几个sprite类与相应的物理体,我想确保碰撞只发生在特定的身体。让我们说我在我的场景中同时有A B C和D但是我只想为它们中的两个配置碰撞,例如A和C.我该怎么做?

非常感谢您的耐心等待!我会批评任何提示!

1 个答案:

答案 0 :(得分:0)

首先,您必须为每种类型的身体设置正确的userData:

bodyA.setUserData("bodyA"); bodyC.setUserData("bodyC");

然后您可以像这样禁用collisision:

List<Fixture> fixtureList = bodyA.getFixtureList();
for(Fixture fixture : fixtureList){
    if(fixture.getUserData().equals("bodyC")
        fixture.setSensor(true);
}

它将所有夹具连接到bodyA并迭代它们。如果任何夹具的userData设置为“bodyC”,它将禁用它的碰撞检测。您可以通过设置false而不是true来启用它(true表示'禁用碰撞')

可能这不是最好的方法,但它有效。

PS我现在无法测试,所以可能你可能不得不改变一些(添加!= null或其他东西)但是我认为你明白了,你将能够做到这一点:)