-
Notifications
You must be signed in to change notification settings - Fork 5
cocos2d x瓦片地图与分辨率的问题
在对基于瓦片地图的游戏进行测试时发现,单位在移动过程中出现了明显的错误,它们无视地图上实际的障碍物,而去绕开根本不存在的障碍物。经过仔细调试,发现寻路算法没有任何问题,而是地图在显示过程中出现了错位。
设计师设计的是32x32像素、128x128瓦片的瓦片地图,程序也是根据这个参数将单位的实际位置转换成格点位置进行寻路的。可是测试中却发现,在cocos2d-x HelloWorld例程的默认配置下,显示在窗口中的单个瓦片大小却只有21x21像素左右,导致地图显示、单位移动都出现了错位。
网上没有找到关于该问题的具体讨论。但在查阅资料中发现,分辨率参数似乎对地图的显示有所影响。cocos2d-x是面向移动端的游戏引擎,所以在设计时考虑到了很多分辨率适配相关的问题,并且提供了分辨率自适应策略。游戏开发人员只需要指定设计时的分辨率(designResolutionSize),就可以自动适配各个平台,而且cocos2d-x似乎是把硬件设备的分辨率和这个分辨率关联起来,以实现游戏在移动端的全屏显示,这可能导致我们在PC端调试的时候出现了一些意想不到的问题。具体参见http://blog.csdn.net/myarrow/article/details/20541357。
因此我们考虑到可能是设计分辨率配置出现了问题。尝试将designResolutionSize改为PC的分辨率1366x768,发现瓦片明显变大,按照原算法计算的瓦片个数变为170x170;再将designResolutionSize改为683x384,发现瓦片又变小,瓦片个数变为85x85。由此可得瓦片的缩放倍率与designResolutionSize成正比例关系。为了得到设计的瓦片个数128x128,设计分辨率应改为1021x574。
经过测试,发现修改过后不再出现地图错位、单位移动错误的情况。但是地图缩放背后的机理仍不清楚。