Прикрепление двух кругов с дистанционным соединением - PullRequest
0 голосов
/ 01 февраля 2012

Я использую cocos2d вместе с box2d и пытаюсь сгенерировать 2 круга, которые я сделал с этим кодом

b2BodyDef bodyDef[2];
b2Body *body[2];

for (int i=0; i<=1; i++) 
{
    bodyDef[i].type = b2_dynamicBody;
    bodyDef[i].position.Set(((i+1)*blobSize)/PTM_RATIO,((i+1)*blobSize)/PTM_RATIO);
    body[i] = world->CreateBody(&bodyDef[i]);

    // Define another box shape for our dynamic body.
    b2CircleShape circle;
    circle.m_radius = (blobSize)/PTM_RATIO;

    // Define the dynamic body fixture.
    b2FixtureDef fixtureDef;
    fixtureDef.shape = &circle; 
    fixtureDef.density = 1.0f;
    fixtureDef.friction = 0.4f;
    fixtureDef.restitution = 0.2f;
    body[i]->CreateFixture(&fixtureDef);
}

Этот код работает безупречно ... затем сразу после этого я вставил свой код длясоздание отрезка расстояния, который выглядел следующим образом

//Finding Midpoint of the circle
b2Vec2 blobCenter;
blobCenter.x = blobSize/2;
blobCenter.y = blobSize/2;

b2DistanceJointDef jointDef;

jointDef.Initialize(body[0], body[1],blobCenter, blobCenter);

jointDef.collideConnected = true;

Этот код компилируется без ошибок, однако при выполнении происходит то же самое, что и раньше, генерируется только 2 оборота, но они не связаны с соединением

1 Ответ

1 голос
/ 01 февраля 2012

Последние 2 параметра Initialize () определяют две точки привязки соединения в мировых координатах, одну на body0 и одну на body1.Я не уверен, чего вы пытаетесь достичь с помощью векторного blobCenter, но эти два якоря (представьте их как две конечные точки создаваемого вами соединения) технически не должны быть одинаковыми.

ДляДля начала попробуйте:

jointDef.Initialize(body[0], body[1], body[0]->GetWorldCenter(), body[1]->GetWorldCenter());

Это установит ограничение расстояния = начальное расстояние покоя между двумя созданными вами телами, и это расстояние будет поддерживаться соединением впоследствии.

ИИ последнее, но не менее важное: добавьте соединение в конец кода:

world->CreateJoint(&jointDef);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...