Jbox2D isSensor for NPC collision

问题描述:

我有一个2D侧滚动游戏,有点像metroid-vania,我有一些NPC我想补充,我想用重力模拟它们在世界上(他们碰撞地板),但我不希望他们与球员相撞。Jbox2D isSensor for NPC collision

将灯具设置为isSensor = true,会导致NPC落地,并将其设置为false使其与玩家发生碰撞。

有没有什么办法可以在不模拟不同世界的情况下完成这个任务,然后检查位置?

+1

你不能做这样的事情: '如果(whoiscolliding的instanceof NPC!)' – Ferdz

+0

我想过,但我不知道该怎么禁用基于个案的碰撞,Box2D会假设您是否可以与它碰撞,一切都可以与它碰撞传感器会忽略所有碰撞,并且非传感器动力学与其他Dynamics,Kinematics和Static对象发生碰撞。如果有办法做到这一点,我不知道它 – Snowdrama

使用的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