Physicsjs屏幕包装

时间:2014-06-09 15:53:35

标签: physicsjs

我目前在环绕世界中制作对象时遇到了一些麻烦。它有点工作,但很多时候,objets似乎陷入了边界。我的包装代码如下:

        // Wrap our position if we are outside of the world bounds
        if (this.state.pos.get(0) > 860) {
            this.state.pos.set(0, this.state.pos.get(1));
        }
        else if (this.state.pos.get(0) < 0) {
          this.state.pos.set(860, this.state.pos.get(1));
        }

        if (this.state.pos.get(1) > 640) {
          this.state.pos.set(this.state.pos.get(0), 0);
        }
        else if (this.state.pos.get(1) < 0) {
          this.state.pos.set(this.state.pos.get(0), 640);
        }

有更好的方法吗?我应该在对象的位置向量上使用平移而不是简单地设置吗?

先谢谢。

1 个答案:

答案 0 :(得分:2)

没有jsfiddle,它有点难以诊断,但这可能是由于this.state.old.pos没有被设置。如果设置了位置(仅),那么速度将被计算为当前位置和先前位置之间的差异(根据verlet积分)。在那种情况下,你隐含地给身体一个巨大的速度。

我建议添加/减去金额而不是设置,然后你可以对旧位置做同样的事情。

以下是一个有效的示例:http://labs.minutelabs.io/Relativistic-Space-Sheep/ 使用相关的代码行:https://github.com/minutelabsio/Relativistic-Space-Sheep/blob/master/library/js/mediators/boilerplate.js#L743