Я использую Cannon.js с Three.js.
Я создал сцену, которая состоит из 1 поля высоты и 5 шаров. Я хочу, чтобы шары катались по полю высоты, используя физику cannon.js.
При перемещении мыши я поворачиваю поле высоты вдоль оси y, чтобы сферы вращались вперед и назад.
У меня есть цикл обновления, который копирует положение сферы и кватернион из cannon.js и применяется к визуальной сфере three.js.
Поле высоты также обновляется одновременно с визуальным этажом three.js. Оба они выполняются в цикле for в requestAnimationFrame.
updateMeshPositions() {
for (var i = 0; i !== this.meshes.length; i++) {
this.meshes[i].position.copy(this.bodies[i].position);
this.meshes[i].quaternion.copy(this.bodies[i].quaternion);
this.hfBody.position.copy(this.mesh.position);
this.hfBody.quaternion.copy(this.mesh.quaternion);
}
}
Однако проблема в том, что когда «пол» вращается взад и вперед, сферы застревают и иногда даже падают сквозь пол. Вот пример на codepen - https://codepen.io/danlong/pen/qJwMBo
Переместите мышь вверх и вниз по экрану, чтобы увидеть это в действии.
Есть ли лучший или иной способ, которым я должен вращать «пол», сохраняя при этом движение сферы?