精灵宽度适合所有分辨率cocos2dx

时间:2016-04-17 11:10:45

标签: cocos2d-x cocos2d-x-3.0

Cocos2dx初学者在这里。使用Cocos2dx V3.10。

我已经阅读了很多关于iOS / Android等多平台支持的教程和文档,主要是我得到它。我正在将setDesignResolutionSize与setContentScaleFactor结合使用,到目前为止它运行良好。

我确实有一个问题,我不确定接近它的最佳方法。

我的游戏是肖像,我想在iphone4s和iphone5上使用特定的精灵宽度相同。

它们都使用相同的设计分辨率大小和内容比例因子,但在iphone4上,精灵比iphone4(和iphone5)上的精灵要小。

我附上两张图片来证明我的意思。

enter image description here

enter image description here

正如你在iphone4上看到的那样,精灵与iphone5的边缘距离不是很远,我认为它的分辨率差异很小。

我是否需要为此分辨率创建另一组资产,我将如何设置这些资产?目前iphone4和iphone5都使用相同的比例和设计尺寸,即:

glview->setDesignResolutionSize(designResolutionSize.width, designResolutionSize.height, ResolutionPolicy::NO_BORDER);
Size frameSize = glview->getFrameSize();

// if the frame's height is larger than the height of medium size.
if (frameSize.height > mediumResolutionSize.height)
{
    director->setContentScaleFactor(MIN(largeResolutionSize.height/designResolutionSize.height, largeResolutionSize.width/designResolutionSize.width));
    searchPaths.push_back("hd");
    FileUtils::getInstance()->setSearchPaths(searchPaths);

}

任何帮助都非常感激。

1 个答案:

答案 0 :(得分:4)

这可以通过某种方式完成,无论您使用何种设备,游戏都会看起来相同。 首先,在AppDelegate.cpp中注释掉以下所有代码

/*   if (frameSize.height > mediumResolutionSize.height)
    {        
        director->setContentScaleFactor(MIN(largeResolutionSize.height/designResolutionSize.height, largeResolutionSize.width/designResolutionSize.width));
    }
    // if the frame's height is larger than the height of small size.
    else if (frameSize.height > smallResolutionSize.height)
    {        
        director->setContentScaleFactor(MIN(mediumResolutionSize.height/designResolutionSize.height, mediumResolutionSize.width/designResolutionSize.width));
    }
    // if the frame's height is smaller than the height of medium sxize.
    else
    {        
        director->setContentScaleFactor(MIN(smallResolutionSize.height/designResolutionSize.height, smallResolutionSize.width/designResolutionSize.width));
    }
*/

现在,确保所有资产都是根据画布尺寸开发的,理想情况下是您背景的大小。

  

假设尺寸为customWidth x customHeight。

现在编辑AppDelegate.cpp中的以下行,如下所示:

glview->setDesignResolutionSize(customWidth, customHeight, ResolutionPolicy::EXACT_FIT);
Size frameSize = glview->getFrameSize();

只要保持纵横比(所有手机都相同,但平板电脑不同),您的游戏无论设备如何都会看起来相同。