精灵宽度以适应所有分辨率 cocos2dx

Sprite width to fit all resolutions cocos2dx

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

我已经阅读了很多关于 iOS/Android 等多平台支持的教程和文档,并且基本上我明白了。我将 setDesignResolutionSize 与 setContentScaleFactor 结合使用,到目前为止效果很好。

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

我的游戏是纵向游戏,我希望特定精灵在 iphone4s 和 iphone5 上的宽度相同。

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

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

正如您在 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);

}

非常感谢任何帮助。

这可以通过某种方式完成,这样无论您使用什么设备,游戏看起来都一样。 首先,在 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));
    }
*/

现在,请确保您的所有资产都是参考 canvas 尺寸开发的,该尺寸最适合您的背景尺寸。

Let's say that size is customWidth x customHeight.

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

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

现在无论使用何种设备,只要保持宽高比(所有手机都相同,但平板电脑不同),您的游戏看起来都一样。