Box2D центрирует точку вращения для кузова с несколькими креплениями - PullRequest
2 голосов
/ 29 апреля 2020

Когда я добавляю несколько приборов к одному телу с помощью Box2D, тело вращается вокруг центральной точки первого прибора (многоугольника) вместо центральной точки тела (0,0). Представьте себе так: enter image description here

Центральная точка фигуры (0, 0). Как я могу сделать так, чтобы он вращался вокруг истинной центральной точки вместо центра первого прибора?

Часть кода, который у меня есть сейчас:

//create body def
let shape = collider.mesh;    
let position = collider.gameObject.transform.position;

let bodyDef = new Box2DBodyDef(bodyType, position, options);
let shapeCount = shape.PointSets.length;
let box2DShapes = Array<b2Shape>(shapeCount);
let b2Body = this._b2world.CreateBody(bodyDef.box2DBodyDef);

for (let i = 0; i < shapeCount; i++) {

  let b2Shape = new b2PolygonShape();
  let polygon: Vector2[];
  polygon = shape.GetScaledPoints(collider.gameObject.transform.scale)[i]; // scales points

  b2Shape.Set(polygon);
  box2DShapes[i] = b2Shape;
}

//create box2D fixtures
for (let i = 0; i < box2DShapes.length; i++) {
  let fixture = new b2FixtureDef();      
  fixture.shape = box2DShapes[i];
  fixture.density = options.densityValues[i];
  fixture.friction = options.frictionValues[i];
  fixture.restitution = options.resitutionValues[i];
  b2Body.CreateFixture(fixture);
}

//make Box2DBody
let body = new Box2DBody(b2Body, new ID().ID, bodyType);
...