2013-03-25 2 views
1

Я использую Cocos2D + Box2D для разработки моей игры. Поскольку Box2D использует метры вместо пикселей, мне нужно определить отношение пикселей к метру. Так я определяю PTM_RATIO в верхней части моего кода:Как определить PTM_RATIO в соответствии с устройством iOS

define PTM_RATIO 32 

Но 32 прекрасно подходит для iPhone < 5, для других устройств, мне нужно, чтобы установить другой номер. Можно ли определить это соотношение в соответствии с типом устройства?

+1

В чем проблема? Сделайте PTM_RATIO постоянным и измените его в соответствии с устройством (например, [[UIDevice currentDevice] userInterfaceIdiom]) – msk

+0

Но подождите минутку, если я сделаю это константой, тогда я не смогу ее изменить позже. Константы - это константы, как их имена. Кроме того, мне нужно поставить PTM_RATIO в один файл заголовка. –

+0

сделать его статическим, а не const – LearnCocos2D

ответ

2

BTW вы можете заменить все PTM_RATIO вхождения в коде с

[Box2DHelper pixelsToMeterRatio]

Таким образом, вы можете переключаться между разрешением Retina и нормальным разрешением без каких-либо проблем.

Заканчивать файл http://subversion.assembla.com/svn/oiram/trunk/GoLeft/GoLeft/Box2DHelper.mm

Чтобы узнать о CC_CONTENT_SCALE_FACTOR проверить When to use CC_CONTENT_SCALE_FACTOR()?

Update: Е.Г. иметь разные PTM для iPad

#define isIPad UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad 
#define PTM_RATIO (isIPad ? 64 : 32) 
+0

Как вы можете видеть в ссылке, которую вы предоставили, PTM_RATIO установлен на 32. Но 32 не подходит для iPAD. –

+0

, то есть kPointsToMeterRatio, а не пиксель на метр – msk

+0

Это работает только для конфигураций сетчатки и не сетчатки. Но размер экрана в iPad и iPhone отличается. Так исправлено 32 не поможет. –

Смежные вопросы