Cocosd2d и body.m_radius зависят от типа устройства

Меня немного смущают точки в cocos2d. У меня универсальная игра, и когда я выставляю фигуру в очках, она хорошо работает на всех устройствах (iPhone, iPhone HD, iPad, iPad HD). Я сделал текстуры в 4 размерах с суффиксом cocos2d, и это тоже хорошо работает.

Но у меня есть тело (b2CircleShape), и мне нужно установить m_radius этого круга. У меня есть эти строки:

b2CircleShape myDynamicBody;
myDynamicBody.m_radius=0.48;

Значение 0,48 оптимизировано для iPhone HD и хорошо работает на iPhone (iPhone и iPhone HD), но на устройствах iPad и iPad HD оно очень мало. Что я должен делать? Проверьте тип устройства и, когда я нахожу iPad, умножьте его на 1,33 (когда я пытался умножить его на 1,33, он отлично работал на обоих iPad). Или есть какой-то лучший (или рекомендуемый) способ, как решить эту проблему?

Спасибо за советы

1 ответ

Решение

Вы должны настроить ваши точки-метры (PTM_RATIO) на iPad.

Причина "точек" в том, что Box2d настроен на физическое моделирование тел от 0,1 до 10 метров, с типичным телом размером около 1х1 метр. Это все еще будет работать для тел за пределами этих размеров, но будет менее надежным.

С другой стороны, у вас есть экран с разрешением ~320x480 или 1024x768 точек. Поэтому нам нужен способ преобразовать представление спрайта в размер, подходящий для Box2d. Для этого мы используем соотношение "количество точек к метру" (PTM).

Если ваш типичный спрайт 64x64, вы должны выбрать соотношение PTM 64. Это заставит box2d увидеть спрайт 64x64 как 1x1, что является идеальным размером для запуска симуляции на нем.

Объяснив это, причина, по которой PTM_RATIO варьируется в зависимости от форм-факторов телефона и планшета, теперь очевидна: причина в том, что они имеют разные разрешения. Спрайт 64х64 на iPhone будет примерно 128х128 на планшете.

Чтобы получить PTM_RATIO на ipad, выберите спрайт на iPhone и посмотрите соответствующий размер на iPad. Теперь умножьте iPhone PTM на соотношение размеров этих двух изображений.

Другие вопросы по тегам