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

Cocos2d x 精灵宽度适合所有分辨率cocos2dx,cocos2d-x,cocos2d-x-3.0,Cocos2d X,Cocos2d X 3.0,这里是Cocos2dx初学者。使用cocos2dxv3.10 我已经阅读了大量关于iOS/Android等多平台支持的教程和文档,基本上我了解到了这一点。我将setDesignResolutionSize与setContentScaleFactor结合使用,到目前为止效果非常好 我确实有一个问题,我不确定最好的解决方法 我的游戏是纵向的,我希望一个特殊的精灵在iphone4s和iphone5上的宽度相同 它们都使用相同的设计分辨率大小和内容比例因子,但在iphone4上,sprite比iphon

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

我已经阅读了大量关于iOS/Android等多平台支持的教程和文档,基本上我了解到了这一点。我将setDesignResolutionSize与setContentScaleFactor结合使用,到目前为止效果非常好

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

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

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

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

正如你在iphone4上看到的,sprite与边缘的距离与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));
    }
*/
现在,请确保您的所有资产都是参照画布大小开发的,画布大小理想情况下与您的背景大小相同

假设大小是customWidth x customHeight

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

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

只要保持纵横比(所有手机的纵横比相同,但平板电脑的纵横比不同),无论使用何种设备,您的游戏现在都会保持相同的外观。

这可以通过某种方式实现,这样无论您使用何种设备,游戏都会保持相同的外观。 首先,在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();

只要保持纵横比(所有手机的纵横比相同,但平板电脑的纵横比不同),无论使用何种设备,您的游戏现在都会保持相同的外观。

感谢您的反馈,这种方法对我来说都是全新的,所以我必须试一试。只是确认一下,如果我的定制尺寸是(w)320(h)480,我会将我的资产设计为该尺寸的两倍,然后使用精确的_-FIT策略吗?平板电脑是如何工作的?与iPhone屏幕不同比例的屏幕(如androids)又如何呢。许多感谢包括iOS和android在内的所有手机屏幕的纵横比或多或少都是1.77,所以这不会是个问题。谢谢。最后一件事,我发现setContentScaleFactor很有用,因为它可以缩放字体等。。。。我现在必须手动执行此操作吗?不要将资产设计为两倍大小。如果您已经将资产设计为两倍大小,则只需将自定义大小加倍,即,(w)640(h)960。现在,如果你在平板电脑上使用相同的应用程序,使用精确的_-FIT策略,那么纵横比将被扭曲,图形将在高度或宽度上被拉伸(取决于你的方向)。但是,如果您使用SHOW_ALL策略,那么游戏在手机和平板电脑上看起来都一样,但是平板电脑上会有黑色边框,以显示多余的区域。不,不用担心字体缩放。我的主要目标是创建一组图形,让游戏在所有手机上看起来都一样,并创建一个“可视”区域(320w),我很高兴平板电脑保持可视区域比例(但没有黑条,只需填充背景),如果这有意义的话?最好的设置是什么?谢谢你的反馈,这种方法对我来说都是新的,所以我不得不尝试一下。只是确认一下,如果我的定制尺寸是(w)320(h)480,我会将我的资产设计为该尺寸的两倍,然后使用精确的_-FIT策略吗?平板电脑是如何工作的?与iPhone屏幕不同比例的屏幕(如androids)又如何呢。许多感谢包括iOS和android在内的所有手机屏幕的纵横比或多或少都是1.77,所以这不会是个问题。谢谢。最后一件事,我发现setContentScaleFactor很有用,因为它可以缩放字体等。。。。我现在必须手动执行此操作吗?不要将资产设计为两倍大小。如果您已经将资产设计为两倍大小,则只需将自定义大小加倍,即,(w)640(h)960。现在,如果你在平板电脑上使用相同的应用程序,使用精确的_-FIT策略,那么纵横比将被扭曲,图形将在高度或宽度上被拉伸(取决于你的方向)。但是,如果您使用SHOW_ALL策略,那么游戏在手机和平板电脑上看起来都一样,但是平板电脑上会有黑色边框,以显示多余的区域。不,不用担心字体缩放。我的主要目标是创建一组图形,让游戏在所有手机上看起来都一样,并创建一个“可视”区域(320w),我很高兴平板电脑保持可视区域比例(但没有黑条,只需填充背景),如果这有意义的话?最好的设置是什么?