2016-01-30 4 views
1

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

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

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

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

ответ

1

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

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

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

+0

Единственная проблема заключается в том, что мы не можем установить другую массу на формы ... это может быть хорошо иметь что-то вроде родителей/детей, групп или даже фиксированное ограничение ... однако Большое спасибо за ваш большой lib :) –