"Склейка" двух тел в cannon.js

Это должно быть очень просто, но я не могу понять, как можно соединить два тела в cannon.js. Я экспериментировал с различными типами ограничений, нет (сначала я подумал, что LockConstraint должен быть именно тем, что мне нужно, поскольку его описывают как "удаление всех степеней свободы").

Чего я хочу добиться, так это "склеить" несколько тел так, чтобы они вращались / вели себя вместе, если один из них двигается / вращается, например, как молоток к его стержню, но абсолютно "фиксирует". (Ограничения ведут себя примерно так, как если бы тела были соединены с помощью резиновых полос, даже если применить очень высокую опцию "maxForce")

Как бы я это сделал? Является ли body.addShape() правильным направлением?

Большое спасибо за любые подсказки.

1 ответ

Решение

Если вы хотите, чтобы две фигуры всегда имели одинаковое относительное преобразование, вы должны поместить их в одно и то же тело.

Этот пример кода создает тело с двумя полями в нем, где X=2 и X=-2 локально в Body относительно центра масс.

var body = new CANNON.Body({ mass: 1 });
var shapeA = new CANNON.Box(new CANNON.Vec3(1,1,1));
body.addShape(shapeA, new CANNON.Vec3(2,0,0), new CANNON.Quaternion());
var shapeB = new CANNON.Box(new CANNON.Vec3(1,1,1));
body.addShape(shapeB, new CANNON.Vec3(-2,0,0), new CANNON.Quaternion());

Также см. Составную демонстрацию: http://schteppe.github.io/cannon.js/demos/compound.html

Другие вопросы по тегам