Предотвратить относительное вращение в ограничении Matter. js - PullRequest
0 голосов
/ 20 апреля 2020

Я использую 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 объекта с фиксированным расстоянием, и они не вращаются (оба квадрата всегда имеют одинаковую абсолютную ориентацию)

enter image description here

Однако объекты могут вращаться между ними, ограничение действует как линейное ограничение, но не как ограничение angular. На этом рисунке показано, как сохраняется расстояние между объектами, как не изменилась абсолютная ориентация объектов, но как объекты вращаются вокруг друг друга.

Как можно избавиться от этого вращения и заставить эти два объекта действовать если бы они были одним объектом?

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...