Box2d несколько приборов и позиционирования
Я пытаюсь создать U-образную форму в Box2d (в Cocos2d), соединяя 3 прямоугольника следующим образом: |_|
Похоже, что соединения не являются правильным решением здесь, так как я не хочу никаких движений, поэтому я создал основной корпус, который является средней частью и 2 креплениями по бокам. Я добавил две стороны к средней части:
mainBody->CreateFixture(&leftFixtureDef);
mainBody->CreateFixture(&rightFixtureDef);
Это работает, однако оба боковых приспособления добавляются в центр основного корпуса. Я не могу понять, как расположить приборы относительно основного корпуса. Прикрепление спрайта / узла к устройству и изменение положения, кажется, не имеет значения.
Есть идеи?
Большое спасибо.
1 ответ
Это свойство формы. Я не нашел такого свойства для b2CircleShape, но для b2PolygonShape
имеет m_centroid
Параметр - это координаты центра формы относительно тела. Укажите его, чтобы иметь правильную позицию фигуры.
Для b2PolyganShape есть метод setAsBox(w, h)
но Алос есть более сложный:
setAsBox(float32 width, float32 height, const b2Vec2 ¢er, float32 rotation)
Используйте этот метод или укажите ручной центроид.
Вот код для формы U
b2BodyDef bDef;
bDef.type = b2_dynamicBody;
bDef.position = b2Vec2(0, 0);
b2Body *body = world_->CreateBody(&bDef);
b2PolygonShape shape;
const float32 density = 10;
shape.SetAsBox(1, 0.1);
body->CreateFixture(&shape, density);
shape.SetAsBox(0.1, 1, b2Vec2(-1 + 0.1, 1), 0);
body->CreateFixture(&shape, density);
shape.SetAsBox(0.1, 1, b2Vec2(1 - 0.1, 1), 0);
body->CreateFixture(&shape, density);