如何在cannon js中执行“棱柱形”/线性/滑块约束?

时间:2016-04-12 17:05:21

标签: cannon.js

我可能错过了一些明显的东西,但我如何对像活塞这样的东西进行约束呢?

FWIW真的很喜欢玩这个代码。

由于

萨姆

2 个答案:

答案 0 :(得分:0)

据我所知,包含的CANNON.Constraint类仅用于约束两个对象相对移动。这在这里似乎没有用,因为你想限制一个主体到特定轴的移动。

它并不优雅,但你可以在每一步都覆盖身体的位置。例如:

var body;

var axes = [
  {axis: 'x', max: 1, min: 0},
  {axis: 'y', max: 0, min: 0},
  {axis: 'z', max: 0, min: 0},
];

axes.forEach(function (a) { 
  if (body.position[a.axis] > a.max) {
    body.position[a.axis] = a.max;
    body.velocity[a.axis] = 0;
  } else if (body.position[a.axis] < a.min) {
    body.position[a.axis] = a.min;
    body.velocity[a.axis] = 0;
  }
});   

如果你的轴不是x / y / z中的一个,那么同样的方法仍然有效,但会有更多的数学运算。 :)

答案 1 :(得分:0)

Cannon.js尚未实现棱柱约束。如果您想为实现做出贡献,请阅读Cannon.js' github page的更多信息。