Сустав в Box2d с cocos2d - PullRequest
       7

Сустав в Box2d с cocos2d

1 голос
/ 29 ноября 2010

Я новичок в box2d и попытался создать соединение между двумя телами. Я написал совместный как

b2RevoluteJointDef jointDef;

        jointDef.bodyA=worm_head;
        jointDef.bodyB=worm_body;

        jointDef.lowerAngle = -0.25f * b2_pi; // -45 degrees

        jointDef.upperAngle = 0.25f * b2_pi; // 45 degrees
        jointDef.enableLimit=true;
        jointDef.maxMotorTorque = 10.0f;

        jointDef.motorSpeed = 10.0f;

        jointDef.enableMotor = true;
        joint=(b2DistanceJoint*)_world->CreateJoint(&jointDef);

но тело не движется, когда голова движется.

мой тиковый метод

- (void)tick:(ccTime) dt {

    //we update the position of the b2body based on the sprite position
    for (b2Body* body = _world->GetBodyList(); body != nil; body = body->GetNext())
    {
        if (body->GetUserData() != NULL) {
            CCSprite *spritedata = (CCSprite *)body->GetUserData();

            if(spritedata.tag==1)
            {
                b2Vec2 b2Position = b2Vec2(SCREEN_TO_WORLD(spritedata.position.x),
                                   SCREEN_TO_WORLD(spritedata.position.y));
                float32 b2Angle = -1 * CC_DEGREES_TO_RADIANS(spritedata.rotation);
                body->SetTransform(b2Position,b2Angle);
            }
            else {
                spritedata.position = ccp(body->GetPosition().x * PTM_RATIO,
                                       body->GetPosition().y * PTM_RATIO);
                spritedata.rotation = -1 * CC_RADIANS_TO_DEGREES(body->GetAngle());
            }

        }

    }
}

Почему не двигается? Как мне изменить свой код?

1 Ответ

1 голос
/ 07 марта 2011

В b2RevoluteJointDef одно тело является статическим, а другое - динамическим.Моя проблема использует две динамические проблемы.Теперь это решено.

...