我有一个 2D 横向卷轴游戏,有点像银河战士,我想添加一些 NPC,我想在世界中用重力等模拟它们(它们与地板碰撞),但我没有希望它们与玩家发生碰撞。
将fixture设置为isSensor = true,会导致NPC从地板上掉下来,设置为false会导致他们与玩家发生碰撞。
有没有什么方法可以在不模拟不同的世界然后检查位置的情况下实现这一点?
使用 Box2D 的内置过滤器,您可以过滤碰撞,使它们不会发生碰撞
FixtureDef floorFixture
floorFixture.filter.categoryBits = 4
FixtureDef playerFixture
playerFixture.filter.catagoryBits = 2;
playerFixture.filter.maskBits = 4;
FixtureDef npcFixture
npcFixture.filter.catagoryBits = 2;
npcFixture.filter.maskBits = 4;
在此示例中,玩家和 NPC 不应相互碰撞,而是会与地板碰撞。
在这里阅读更多(搜索过滤): http: //www.box2d.org/manual.html