我目前在环绕世界中制作对象时遇到了一些麻烦。它有点工作,但很多时候,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);
}
有更好的方法吗?我应该在对象的位置向量上使用平移而不是简单地设置吗?
先谢谢。
答案 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