允许特定物体与边缘碰撞但不与其他固定物体碰撞

时间:2015-05-30 12:10:15

标签: physicsjs

我正在使用边缘碰撞检测行为来添加与视口边缘的碰撞,并使用身体脉冲响应行为来响应这些碰撞,以便碰撞体从“墙壁”反弹。 / p>

然而,我似乎无法使身体脉冲响应仅适用于给定的身体和边缘(身体脉冲响应显然没有applyTo方法?),所以现在身体甚至与其他固定身体相撞虽然我也不想要它们。

如何解决此问题?

谢谢!

1 个答案:

答案 0 :(得分:0)

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

身体脉冲响应行为适用于给定通道中的所有碰撞。 您可以通过使用applyTo(实体)尝试将该行为限制为特定实体,而不是通过更改报告冲突的通道,并将该通道作为身体脉冲响应行为的输入。

(不完整)示例:

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.
     */
});

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