p2.js - 物理2d引擎
让我们说我们有通过互联网同步网络的机构 但我们也有不同步的身体,为什么?
例如雨滴或其他一些粒子效应。
雨滴需要与地面碰撞,飞溅或类似的东西。 但它们不会影响地面的速度,因为它会使网络游戏失去同步。
如果非同步体与同步体发生碰撞(雨滴与嗯也会向上/向下移动),则所有产生的力都需要应用于不同步体(雨滴)。
问题:
如何在p2.js中实现? (甚至在box2d中,也许它也会有所帮助)
具有属性(由我扩展)属性.sync
设置为false的动态主体不会影响身体的.sync
设置为真的速度/位置
答案 0 :(得分:0)
在p2.js引擎中只需覆盖此方法:
p2.Equation.prototype.addToWlambda = function(deltalambda) {
var bi = this.bodyA,
bj = this.bodyB,
invMassi = bi.invMassSolve,
invMassj = bj.invMassSolve,
invIi = bi.invInertiaSolve,
invIj = bj.invInertiaSolve,
G = this.G;
//injection part
if ( !bi.sync && bj.sync ) { //.sync is my field of Body "class"
invMassj = 0;
invIj = 0;
}
else if ( !bj.sync && bi.sync ) {
invMassi = 0;
invIi = 0;
}
//injection part end
// v_lambda = G * inv(M) * delta_lambda
addToVLambda(bi.vlambda, G[0], G[1], invMassi, deltalambda, bi.massMultiplier);
bi.wlambda += invIi * G[2] * deltalambda;
addToVLambda(bj.vlambda, G[3], G[4], invMassj, deltalambda, bj.massMultiplier);
bj.wlambda += invIj * G[5] * deltalambda;
}
到目前为止一切顺利。现在它有效。