首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Box2dweb -冲突接触点

Box2dweb -冲突接触点
EN

Stack Overflow用户
提问于 2012-06-04 17:02:09
回答 1查看 3.6K关注 0票数 8

我使用box2dweb。我正在尝试开发一款游戏。在某些情况下,我需要找出"Circle“和"Box”之间的接触点。我只知道这可以用b2ContactListener来完成。我们可以通过使用后期解析事件实现b2ContactListener来接收联系人数据。请帮帮我!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-06-09 07:40:31

您走在了正确的轨道上,您可以使用b2ContactListener连接到各种事件:

代码语言:javascript
复制
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在他的博客上有一些关于碰撞/反应的很好的文章。这就是我学到这些东西的地方,所以这完全归功于他。

我希望这能帮到你。

谢谢,加里

票数 16
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10878750

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档