Я вижу, все говорят, что вы добавите гравитацию как и в Box2D мире:Box2D Гравитация по конкретному объекту?
b2Vec2 gravity = b2Vec2(0.0f, -10.0f);
bool doSleep = false;
world = new b2World(gravity, doSleep);
Дело в том, однако, что если я хочу гравитацию только на определенном b2Body, который содержит USERDATA из CCSprite? AFAIK это применит гравитацию ко всему миру, чего я не хочу, так может кто-нибудь объяснить мне, как я могу применить эту гравитацию только к конкретному b2Body?
Спасибо!
Edit1: Могу ли я просто сделать эту линию,
_bottomBody->ApplyForce(gravity, _bottomBody->GetPosition());
Вместо мирового = новый b2World ... и т.д. ... Будет не то, что работа с гравитацией только на этом b2Body?
Как так? Я просто предпочел бы использовать способ выше, есть ли способ изменить мой код выше только для применения к одному объекту? –
Ваше приложение, несомненно, имеет цикл кадров, то есть процедуру/метод, где вы вызываете b2World :: step(). Внутри этой процедуры вам нужно вызвать метод applyForce для указанного тела. См. Пример кода в этом ответе. –
Мое приложение не имеет цикла кадров. Мое приложение Box2d Смешанно с Cocos2d, смешанным с Obj C. Я просто использую цикл игры Cocos2D, который вызывается каждую секунду, что означает, когда просмотр обновляется. Проверьте Edit 1 в моем исходном сообщении, если этот код будет работать для меня. –