Jbox2D isSensor for NPC collision
问题描述:
我有一个2D侧滚动游戏,有点像metroid-vania,我有一些NPC我想补充,我想用重力模拟它们在世界上(他们碰撞地板),但我不希望他们与球员相撞。Jbox2D isSensor for NPC collision
将灯具设置为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
你不能做这样的事情: '如果(whoiscolliding的instanceof NPC!)' – Ferdz
我想过,但我不知道该怎么禁用基于个案的碰撞,Box2D会假设您是否可以与它碰撞,一切都可以与它碰撞传感器会忽略所有碰撞,并且非传感器动力学与其他Dynamics,Kinematics和Static对象发生碰撞。如果有办法做到这一点,我不知道它 – Snowdrama