CANNON.js:检查身体是否受到约束

时间:2015-08-26 01:56:51

标签: javascript cannon.js

我一直在尝试使用javascript制作多人游戏(大多数是在服务器上,使用Node.js);我想要做的核心机制之一是玩家将能够设计自己的战斗风格(直到他们如何挥剑等)。问题是我无法找到任何简单的方法来约束玩家'运动。

我首先尝试编写一种方法,然后检查并锁定玩家的风格,这样他们看起来并不会同时打破每个肢体,但这并没有真正发挥作用。然后我找到了精彩的CANNON.ConeTwistConstraint,但在查看文档之后,我发现CANNON.js的约束似乎没有任何内置函数可供测试两个机构是否超出了约束的限制。我已经考虑让我的游戏只是在一个单独的模拟中创建对象,并检查是否有力量应用于任何一个对象,但我不确定如何解决这个问题,或者是否有'更好的方式。

我的问题是否有简单/简单的解决方案?如果不是,那么实现上述目标的CPU密集程度最低?

1 个答案:

答案 0 :(得分:0)

您可以手动检查ConeTwistConstraint是否达到其限制。如果您查看方法CANNON.ConeEquation.prototype.computeB,您可以看到它使用cos()和点积来计算约束违规," g"。您可以使用以下代码执行相同的操作。

var eq = coneTwistConstraint.coneEquation;
var g = Math.cos(eq.angle) - eq.axisA.dot(eq.axisB);
if(g > 0) {
    // Constraint limit exceeded
} else {
    // Constraint is within limits
}

使用相同的策略,您可以检查是否超出扭曲限制。由于扭曲方程为CANNON.RotationalEquation,因此代码变为:

var eq2 = coneTwistConstraint.twistEquation;
var g2 = Math.cos(eq2.maxAngle) - eq2.axisA.dot(eq2.axisB);