Box2d антигравитационный вопрос - PullRequest
1 голос
/ 09 июня 2011

я использую cocos2d с box2d.
В настоящее время я пытаюсь оптимизировать систему, которую я установил, чтобы некоторые объекты имели гравитацию.
В моем методе тиков, если свойство объекта object.isGravitated = NO,будет вызываться антигравитационный метод для использования object.body-> applyForce (b2Vec2 (0,10));противодействовать нисходящей силе.Но это кажется дорогостоящим с точки зрения fps.
Наличие нескольких (5 - 10) isGravitated = НИКАКИЕ объекты не приводят к падению fps примерно на 10 fps или около того.

Вам это кажется правильным и какие-либо предложения по улучшению этой системы?
Спасибо

1 Ответ

1 голос
/ 09 июня 2011

Вы можете изменить b2body напрямую, чтобы он содержал коэффициент гравитации. По умолчанию установите значение 1.0f, что означает нормальную гравитацию. Установите значение 0.0f без гравитации.

Гравитация рассчитывается с использованием b2Island, поэтому в b2Island.cpp ищите линию (это в методе Solve):

b->m_linearVelocity += step.dt * (gravity + b->m_invMass * b->m_force);

Измените его, чтобы умножить гравитацию на коэффициент гравитации.

Это должно быть быстро, эффективно и не так много работы.

Вам придется делать это на C или C ++, а не в Objective-C, поскольку это объект C ++.

...