【问题标题】:Allowing specific bodies to collide with edges but not with other fixed bodies允许特定物体与边缘碰撞,但不允许与其他固定物体碰撞
【发布时间】:2015-05-31 00:02:22
【问题描述】:

我正在使用边缘碰撞检测行为来添加与视口边缘的碰撞,并使用 body-impulse-response 行为来响应这些碰撞,以便碰撞的物体会从“墙壁”反弹。

但是,我似乎无法让 body-impulse-response 仅适用于给定的物体和边缘(body-impulse-response 显然没有 applyTo 方法?),所以现在物体甚至与其他固定物体发生碰撞虽然我也不想要它们。

我该如何解决这个问题?

谢谢!

【问题讨论】:

    标签: physicsjs


    【解决方案1】:

    我找到了一个可能的解决方案:

    body-impulse-response 行为适用于给定通道中的所有碰撞。 您可以更改报告碰撞的通道,并将该通道作为 body-impulse-response 行为的输入,而不是尝试使用 applyTo(bodies) 将该行为限制在特定主体。

    (不完整)示例:

    Phyiscs(function(world) {
        var viewportBounds = Physics.aabb(0, 0, viewportWidth, viewportHeight);
    
        world.add(Physics.behavior('edge-collision-detection', {
            channel: 'collisions-edge:detected',
            aabb: viewportBounds,
            restitution: 0.7,
            cof: 1
        }));
    
        world.add(Physics.behavior('body-impulse-response', {
                    check: 'collisions-edge:detected'
        }));
    
        /* You can now add a body-collision-detection behavior with the default 
         * collisions:detected (or a custom name) channel, and the
         * body-impulse-response added above won't respond to these collisions.
         */
    });
    

    如果您有不同/更好的解决方案 - 请分享!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多