2015-04-25 3 views
0

Моя игра - двухмерная машина, с прямой бесконечной картой, где я наконец смог добавить некоторые случайные препятствия. Есть только 3 позиции, на которых может находиться автомобиль, и все работает нормально.Как сделать TMXTiledMap отзывчивым?

Дело в том, что я недавно заметил, что он не реагирует, и попытался сделать его отзывчивый, добавив строку них один к AppDelegate.cpp:

glview->setDesignResolutionSize(1024.0, 600.0, kResolutionFixedWidth); 

I «ве пытались использовать kResolutionFixedWidth, kResolutionFixedHeight и все остальные 5 переменных, вы можете поместить туда, но я получил только черные линии вдоль экрана и каждого пробоя экрана вы можете себе представить, -.-»

Я могу понять, что мне нужно изменить размер моей TMXTiledMap вручную из-за характера плиток (я сделал это с Tiled), но я не знаю, как справиться с этой проблемой.

Обратите внимание, что в настоящее время я разрабатываю Android-устройство с разрешением 1024x600, но я бы хотел поддерживать как минимум наиболее распространенные разрешения для планшетов и смартфонов.

+0

Какова была проблема с моим вопросом? Здесь вежливая проблема? – jjimenezg93

ответ

0

Возможно, существуют две политики разрешения, которые вы хотите использовать.

Если вы используете No Border, тогда вы не должны видеть никаких черных полос, но двигатель обрезает ваше проектное разрешение, поэтому вы не захотите поместить UI в углах, или вы захотите использовать Visible Происхождение и видимый размер для расчета позиций.

Если вы используете Exact Fit, вы должны установить разрешение проекции на точный размер устройства, а затем вы несете ответственность за правильное позиционирование и масштабирование, чтобы избежать искажений.

Вам нужно будет масштабировать свое искусство в зависимости от выбора политики и дизайна, если вы видите черные полосы.

Вы прочитали эту страницу? http://www.cocos2d-x.org/wiki/Multi_resolution_support

Вот что мы делаем для одной из наших игр:

auto director = Director::getInstance(); 
auto glview = director->getOpenGLView(); 

float contentScaleFactor = 1.f; 

// Set the design resolution 
Size frameSize = glview->getFrameSize(); 
Size designSize = glview->getDesignResolutionSize(); 
CCLOG("defaults:"); 
CCLOG("framesize = {%f,%f}", frameSize.width, frameSize.height); 
CCLOG("visibleSize = {%f,%f}", glview->getVisibleSize().width, glview->getVisibleSize().height); 
CCLOG("designSize = {%f,%f}", designSize.width, designSize.height); 
CCLOG("contentscalefactor = %f", director->getContentScaleFactor()); 

Vec2 origin = director->getVisibleOrigin(); 
CCLOG("visibleSize = %s", CStrFromSize(director->getVisibleSize())); 
CCLOG("origin = {%f,%f}", origin.x, origin.y); 

// Retina? 
contentScaleFactor = director->getContentScaleFactor(); 
float designWidth = frameSize.width/contentScaleFactor; 
float designHeight = frameSize.height/contentScaleFactor; 
CCLOG("contentScale = %f, designWidth/Height = {%f,%f}", contentScaleFactor, designWidth, designHeight); 

glview->setDesignResolutionSize(designWidth, designHeight, ResolutionPolicy::EXACT_FIT); 

// we designed the game for 480x320 (hence the divisors) 
// used to scale full screen backgrounds 
float fullWidthScaleFactor = designWidth/480.f; 
// used to scale up most UI 
float largeScaleFactor = floorf(designHeight/320.f); 
// round to closest HALF step (1.0,1.5,2.0,2.5,3.0,etc) 
// used for scaling UI where pixel art is affected by .1 scales 
float largeScaleFactorExact = floorf(designHeight * 2.f/320.f) * 0.5f; 
// used to scale up UI that must be touchable (larger on high desnsity) 
float largeScaleFactorUI = STROUND(designHeight/320.f); 

// this forces minimum of 1x scale (we should just not support these devices) 
float scaleFitAll = designWidth > designHeight ? designHeight/320.f : designWidth/480.f; 
if(largeScaleFactor < 1.f) 
    largeScaleFactor = scaleFitAll; 
if(largeScaleFactorExact < 1.f) 
    largeScaleFactorExact = scaleFitAll; 
if(largeScaleFactorUI < 1.f) 
    largeScaleFactorUI = scaleFitAll; 
+0

Да, я прочитал wiki-страницу и не получил ни малейшего смысла, поэтому я просил об этом. Я попробую то, что вы сказали через пару дней, когда я закончу этот Спринт. Я вижу суть, и я думаю, это решение. Спасибо за Ваш ответ – jjimenezg93

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