смяна на гравитационната скала на 'тялото' box2d

Зададох свойството мащаб на гравитацията на Box2d тяло. Бих искал да променя скалата на гравитацията, когато тялото достигне определена позиция. Може ли това да стане? Ако да, как може да се постигне.


person oopology    schedule 12.06.2013    source източник


Отговори (2)


В моя случай зададох постоянна скорост за падащи предмети като тази.

#define MIN_SPEED 2.0f

-(void)update:(ccTime) dt
{
    b2Vec2 vel = self.body->GetLinearVelocity();

    if( ABS(vel.x) > MIN_SPEED )
    {
        if(vel.x>0)
            vel.x = MIN_SPEED;
        else
            vel.x = -(MIN_SPEED);
    }
    if( ABS(vel.y) > MIN_SPEED )
    {
        if(vel.y>0)
            vel.y = MIN_SPEED;
        else
            vel.y = -(MIN_SPEED);
    }

    self.body->SetLinearVelocity(vel);
}
person Guru    schedule 12.06.2013

Проверете позицията и използвайте SetGravityScale():

b2Vec2 pos = body->GetPosition();

if (pos.x > minPosX && pos.x < maxPosX
    && pos.y > minPosY && pos.y < maxPosY) {
        body->SetGravityScale(theScalingFactor);
}
person Benoît Lahoz    schedule 19.06.2013