2

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

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

有没有更好的方法来做到这一点?我应该在对象的位置向量上使用平移而不是简单地设置它吗?

4

1 回答 1

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

于 2014-06-10T22:20:18.553 回答