Объект начинает вращаться при наложении линейного импульса - iPhone - PullRequest
0 голосов
/ 11 октября 2011

В моей игре я использую Box2D, чтобы применить линейный импульс к объекту круга.Когда импульс применяется к объекту, он начинает вращаться по часовой стрелке, но я не могу остановить его вращение.

Вот код:

-(void) ccTouchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
    UITouch *touch = [touches anyObject];
    CGPoint touchLocation = [self convertTouchToNodeSpace:touch];

    CGPoint vector = ccpSub(ccp(touchLocation.x,touchLocation.y), _ball.position);

    b2Vec2 forceVector(vector.x / 5, vector.y / 5);

    if ((vector.x <= 100) && (vector.y <= 100))
         _ballBody->ApplyLinearImpulse(forceVector, _ballBody->GetLocalCenter());
}

Надеюсь, что кто-то мог прояснить ситуацию.

UPD:

// Create ball body and shape
    b2BodyDef ballBodyDef;
    ballBodyDef.type = b2_dynamicBody;
    ballBodyDef.position.Set(100/PTM_RATIO, 100/PTM_RATIO);
    ballBodyDef.userData = _ball;
    _ballBody = _world->CreateBody(&ballBodyDef);

    b2CircleShape circle;
    circle.m_radius = 26.0/PTM_RATIO;

    b2FixtureDef ballShapeDef;
    ballShapeDef.shape = &circle;
    ballShapeDef.density = 0.3f;
    ballShapeDef.friction = 0.2f;
    ballShapeDef.restitution = 0.4f;
    _ballBody->CreateFixture(&ballShapeDef);

1 Ответ

0 голосов
/ 11 октября 2011

использование body->applyLinearImpulse(impulse, body->GetPosition())

...