Невозможно установить "setAsEdge" в Box2D (iphone).Просто, но не понимаю - PullRequest
0 голосов
/ 08 марта 2011

первый мой код

// Define the ground body.
        b2BodyDef groundBodyDef;
        groundBodyDef.position.Set(0,0); // bottom-left corner

        // Call the body factory which allocates memory for the ground body
        // from a pool and creates the ground box shape (also from a pool).
        // The body is also added to the world.
        b2Body* groundBody = world->CreateBody(&groundBodyDef);

        // Define the ground box shape.
        b2PolygonShape groundBox;       

        // bottom
        groundBox.SetAsEdge(b2Vec2(0,0), b2Vec2(screenSize.width/PTM_RATIO,0));
        groundBody->CreateFixture(&groundBox,0);

        // top
        groundBox.SetAsEdge(b2Vec2(0,screenSize.height/PTM_RATIO), b2Vec2(screenSize.width/PTM_RATIO,screenSize.height/PTM_RATIO));
        groundBody->CreateFixture(&groundBox,0);

        // left
        groundBox.SetAsEdge(b2Vec2(0,screenSize.height/PTM_RATIO), b2Vec2(0,0));
        groundBody->CreateFixture(&groundBox,0);

        // right
        groundBox.SetAsEdge(b2Vec2(screenSize.width/PTM_RATIO,screenSize.height/PTM_RATIO), b2Vec2(screenSize.width/PTM_RATIO,0));
        groundBody->CreateFixture(&groundBox,0);

Это создаст линии вокруг экрана iphone.Но я хочу, чтобы нижняя строка была посередине (мне нужно изменить .y, но я не знаю как).Как это сделать?

И может кто-нибудь объяснить мне эти методы "setAsEdge"?

Спасибо :))

1 Ответ

1 голос
/ 11 марта 2011
// bottom

float screenMid = screenSize.height/2;  // Y axis on screen middle

        groundBox.SetAsEdge(b2Vec2(0,screenMid/PTM_RATIO),b2Vec2(screenSize.width/PTM_RATIO,screenMid/PTM_RATIO));

Это сместит вашу нижнюю строку к середине экрана. Метод SetAsEdge берет две точки и рисует линию от точки-1 до точки-2. В приведенном выше утверждении точка первая - "b2Vec2 (0, screenMid / PTM_RATIO)". Где 0 - ось x, а screenMid - ось y первой точки. То же самое относится и ко второму пункту.

Вам нужно разделить каждую точку на PTM_RATIO, чтобы перевести ее в координаты box2d.

...