Я использую Matter. js, и я хочу, чтобы два прямоугольника с ограничением заставляли их действовать, если они находятся в одном жестком объекте.
Я в основном устанавливаю жесткость на 1, поэтому действует ограничение как жесткий стержень вместо пружины. Также, чтобы предотвратить вращение объекта, я устанавливаю интервал в бесконечность.
// a 20x20 square with 0 friction and infinite inertia
let objectA = Bodies.rectangle(0, 0, 20, 20, {
frictionAir: 0,
inertia: 'Infinity'
});
let objectB = Bodies.rectangle(30, 0, 20, 20, {
frictionAir: 0,
inertia: 'Infinity'
});
let constraint = Constraint.create({
bodyA: objectB,
bodyB: objectB,
length: 30,
stiffness: 1);
Это действительно создает 2 объекта с фиксированным расстоянием, и они не вращаются (оба квадрата всегда имеют одинаковую абсолютную ориентацию)
Однако объекты могут вращаться между ними, ограничение действует как линейное ограничение, но не как ограничение angular. На этом рисунке показано, как сохраняется расстояние между объектами, как не изменилась абсолютная ориентация объектов, но как объекты вращаются вокруг друг друга.
Как можно избавиться от этого вращения и заставить эти два объекта действовать если бы они были одним объектом?