我使用box2dweb。我正在嘗試開發一款遊戲。在某些時候,我需要找出「圓圈」和「箱子」之間的接觸點。我所知道的是可以使用b2ContactListener來完成。我們可以通過使用Post-Solve Event實現b2ContactListener來接收聯繫人數據。請幫忙!Box2dweb - 碰撞接觸點
8
A
回答
16
你是在正確的軌道上還有你可以連接各種事件與b2ContactListener:
var b2Listener = Box2D.Dynamics.b2ContactListener;
//Add listeners for contact
var listener = new b2Listener;
listener.BeginContact = function(contact) {
//console.log(contact.GetFixtureA().GetBody().GetUserData());
}
listener.EndContact = function(contact) {
// console.log(contact.GetFixtureA().GetBody().GetUserData());
}
listener.PostSolve = function(contact, impulse) {
if (contact.GetFixtureA().GetBody().GetUserData() == 'ball' || contact.GetFixtureB().GetBody().GetUserData() == 'ball') {
var impulse = impulse.normalImpulses[0];
if (impulse < 0.2) return; //threshold ignore small impacts
world.ball.impulse = impulse > 0.6 ? 0.5 : impulse;
console.log(world.ball.impulse);
}
}
listener.PreSolve = function(contact, oldManifold) {
// PreSolve
}
this.world.SetContactListener(listener);
只需卸下postSolve代碼,並根據你需要做勾成相應的事件是什麼。
塞特拉德在他的博客上有一些關於碰撞/對他們作出反應的偉大文章。這就是我拿起這些東西的地方,所以全力讚揚他。
我希望這會有所幫助。
感謝, 加里
相關問題
- 1. Box2DWeb,PolygonShape.SetAsVector無法檢測碰撞
- 2. 獲得碰撞接觸力
- 3. 如何在碰撞後刪除Box2dWeb中的物體
- 4. 與錨點碰撞
- 5. UIButton碰撞點擊
- 6. 碰撞觸發動畫
- 7. 碰撞觸發器似乎總是碰撞
- 8. 碰撞和團結碰撞
- 9. 執行SpriteKit物理碰撞/接觸觸摸結束
- 10. 碰撞正常的兩點
- 11. 衝擊點:圓形碰撞
- 12. 遇到問題碰撞點
- 13. 檢測多個碰撞點
- 14. GJK中的碰撞點
- 15. Box2D中的高級碰撞檢測 - 碰撞點,力量等
- 16. 在邊界框碰撞中獲取碰撞點
- 17. 基於圖塊的碰撞;角點碰撞問題
- 18. AndEngine Box2D。移除碰撞後的碰撞遊戲碰撞
- 19. 碰撞
- 20. 碰撞?
- 21. Three.js碰撞並移除碰撞對象
- 22. sprite碰撞cocos2d。每幀碰撞
- 23. Sprite Kit碰撞多重碰撞
- 24. 2D碰撞(返回碰撞端)
- 25. Phaser P2碰撞殺死碰撞精靈
- 26. 碰撞檢測和碰撞響應
- 27. 需要在box2dweb中使用碰撞過濾的真實世界的例子
- 28. 斯威夫特3 Sprite節點接觸/碰撞行爲不正常
- 29. Sprite Kit - 在正確的碰撞接觸點上休息物理人體對象
- 30. Unity Destroy(gameObject)殺死多個碰撞體上的父對象和碰撞觸發
這可能幫助:http://www.iforce2d.net/b2dtut/collision-anatomy – iforce2d