javascript - Box2dweb - 碰撞接触点

标签 javascript html canvas box2d

我使用 box2dweb。我正在尝试开发游戏。在某些时候,我需要找出“圆”和“盒子”之间的接触点。我所知道的是它可以使用 b2ContactListener 来完成。我们可以通过使用 Post-Solve Event 实现 b2ContactListener 来接收联系人数据。请帮忙!

最佳答案

您走在正确的轨道上,您可以使用 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 代码,并根据您需要执行的操作挂接到适当的事件。

Seth ladd 在他的博客上有一些关于碰撞/对它们的 react 的很棒的文章。这是我收集这些信息的地方,所以完全归功于他。

希望对您有所帮助。

谢谢, 加里

关于javascript - Box2dweb - 碰撞接触点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10878750/

相关文章:

javascript - Safari 中的持久断点

javascript - 查找 ul 如果它的父元素是 li

jquery - 下拉菜单 - jQuery/CSS

javascript - 如何创建跟随鼠标的圆圈轨迹?

javascript - 显式分配时 Canvas 字体被忽略

javascript - Bootstrap 模式中的 Summer Note 问题

javascript - 需要在 ReactJS 中的 render() 之前执行函数

javascript - meteor : get the opposite statement from a variable into handlebars

javascript - 识别网页上 AppleScript 的 JavaScript 按钮

javascript - 如何修改Chartjs 2条形图中的条形宽度