前回は、worldにaddBodyしたCannon.BodyとaddBodyしていないCannon.Bodyに対してPointToPointConstraintを使いました。
今回はPointToPointConstraintの引数に、worldにaddBodyしたCannon.Bodyを2つ渡してみます。
結論としては同じ座標(中間地点)に引き寄せられ、力を解除すると弾き飛ばされるので、力を掛けるタイミングによっては衝突しているように見えます。
ソースコード(抜粋)
function handlePointerDownCanvas() { pointToPointConstraintRef.current = new CANNON.PointToPointConstraint( leftBody, new CANNON.Vec3(0, 0, 0), rightBody, new CANNON.Vec3(0, 0, 0) ); world.addConstraint(pointToPointConstraintRef.current); } function handlePointerUpCanvas() { world.removeConstraint(pointToPointConstraintRef.current); }
前回とほぼほぼ同じコードです。
- addWorldしていないBodyとaddWorldしているBodyの場合 → addWorldしていないBodyの位置
- addWorldしているBody同しの場合 → 中間地点
に引き寄せられるということがわかりました。