精灵宽度以适应所有分辨率 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();
现在无论使用何种设备,只要保持宽高比(所有手机都相同,但平板电脑不同),您的游戏看起来都一样。
这里是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();
现在无论使用何种设备,只要保持宽高比(所有手机都相同,但平板电脑不同),您的游戏看起来都一样。