box2d b2_staticПроблема положения тела - PullRequest
0 голосов
/ 02 июня 2011

Я столкнулся со странной проблемой позиционирования тел в cocos2d / box2d.

Если я установлю тип b2BodyDef как b2_staticBody, я не смогу установить тела в любой позиции из множителей PTM_RATIO.Позвольте мне объяснить:

#define PTM_RATIO 32.0

...
myBodyDef_1.type = b2_staticBody;
myBodyDef_1.position.Set(320.0/PTM_RATIO, 320.0/PTM_RATIO);
...

и

...
myBodyDef_1.type = b2_staticBody;
myBodyDef_1.position.Set(333.0/PTM_RATIO, 333.0/PTM_RATIO);
...

дает тот же результат.Без изменений в положении.Разница в 13 пикселей ничего не значит.

Если я делаю разницу больше, чем PTM_RATIO, она появляется на расстоянии 1 PTM_RATIO (32 пикселя).

Например:

...
myBodyDef_1.type = b2_staticBody;
myBodyDef_1.position.Set(358.0/PTM_RATIO, 358.0/PTM_RATIO);
...

Разница38px, но отображается только 32px (1 PTM_RATIO).

Я пытался использовать прямые значения, такие как 1.0 и 1.1. Это не сработало.Я не могу избавиться от множителей PTM_RATIO.

Еще один совет, если я использую b2_kinematicBody в качестве типа, он отлично работает.

Есть идеи?

Ответы [ 2 ]

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

попробуйте добавить явный разговор: 358.0/((float)PTM_RATIO).попробуйте myBodyDef_1.position = b2Vec2 (333.0 / PTM_RATIO, 333.0 / PTM_RATIO);и откровенный разговор здесь.попробуйте

float x = 333.0/PTM_RATIO;
float y = 333.0/PTM_RATIO;
myBodyDef_1.position = b2Vec2(x, y);

Дайте мне знать результат, пожалуйста

0 голосов
/ 02 июня 2011

myBodyDef_1.position.Set(333.0/PTM_RATIO, 333.0/PTM_RATIO); здесь 333 / PTM_RATIO, дает результат в дробной части, которая всегда округляется до его нижней, целочисленной части, так что здесь вы не можете иметь дело, с одним или менее 32 пикселями.

С 358/32 (PTM_Ratio), он идет в 11-м блоке (320 - 10-й), поэтому он предоставит вам следующую позицию.

...