0
我有一個2D側滾動遊戲,有點像metroid-vania,我有一些NPC我想補充,我想用重力模擬它們在世界上(他們碰撞地板),但我不希望他們與球員相撞。Jbox2D isSensor for NPC collision
將燈具設置爲isSensor = true,會導致NPC落地,並將其設置爲false使其與玩家發生碰撞。
有沒有什麼辦法可以在不模擬不同世界的情況下完成這個任務,然後檢查位置?
我有一個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