Android 使用Andengine进行冲突过滤-如何?

Android 使用Andengine进行冲突过滤-如何?,android,box2d,andengine,Android,Box2d,Andengine,我正在开发一款基于Andengine的游戏,我被碰撞问题绊住了。我有几个sprite类和各自的physic body,我想确保碰撞只发生在特定的body上。假设我的场景实体A、B、C和D同时存在,但我只想为它们中的两个配置碰撞,例如A和C。我该怎么做 非常感谢您的耐心等待!我会给你小费的 首先,您必须为每种类型的主体设置适当的用户数据: bodyA.setUserData(“bodyA”); bodyC.setUserData(“bodyC”) 然后可以像这样禁用碰撞: List<Fixt

我正在开发一款基于Andengine的游戏,我被碰撞问题绊住了。我有几个sprite类和各自的physic body,我想确保碰撞只发生在特定的body上。假设我的场景实体A、B、C和D同时存在,但我只想为它们中的两个配置碰撞,例如A和C。我该怎么做


非常感谢您的耐心等待!我会给你小费的

首先,您必须为每种类型的主体设置适当的用户数据:

bodyA.setUserData(“bodyA”);
bodyC.setUserData(“bodyC”)

然后可以像这样禁用碰撞:

List<Fixture> fixtureList = bodyA.getFixtureList();
for(Fixture fixture : fixtureList){
    if(fixture.getUserData().equals("bodyC")
        fixture.setSensor(true);
}
List fixtureList=bodyA.getFixtureList();
用于(夹具:夹具列表){
if(fixture.getUserData()等于(“bodyC”)
固定装置设置传感器(正确);
}
它获取连接到bodyA的所有装置并对其进行迭代。如果任何装置的userData设置为“bodyC”,则将禁用该装置的碰撞检测。您可以将其设置为false而不是true(true表示“禁用碰撞”)

也许这不是最好的方法,但它是有效的


PS我现在无法测试它,所以可能您必须更改某些内容(添加!=null或其他内容),但我认为您明白了重点,并且能够做到:)

您尝试过碰撞掩码位吗?您好Mateusz!非常感谢您的支持!我明白你的意思!但是,我正在尝试实现一个冲突过滤器。检查这个例子:我认为这是最好的方法,在我的特殊情况下!但我无法重现预期的结果:一切都与你的身体有关。在Fixture def constructor中,您可以传递另一个参数,该参数是要碰撞的其他实体的遮罩。正如您在示例框中所看到的,仅与其他框和墙等形成共线。示例中的48-64行是整个魔法发生的最重要的部分。是的,我也尝试聚焦这些行。但是没有成功。尸体并没有像预期的那样碰撞。我知道我做错了什么,但我不知道什么是失败。当我开始工作时,我会分享;)您可以在此处共享您的非工作版本,我将尽力提供帮助;)