2d游戏循环滚动地图中的拼接缝隙问题
来源:互联网 发布:淘宝福利晒图店家 编辑:程序博客网 时间:2024/05/16 18:20
@废话在前
这个问题是我在用cocos2d-x做第一个2d游戏(ios多点触控实现玩家同时控制多架飞机的机战游戏)碰到的一个问题,两张交替滚动的地图之间出现了缝隙,当时第一感觉肯定是帧切换一帧的时间间隔造成的,想通过微调几个像素纠正结果解决不了,仔细分析了一下才知道了真正原因和正确的弥补方法。
问题原因和解决办法
2d游戏中通过两张可拼接的循环地图移动切换实现无限前进的效果,即游戏角色相对屏幕静止,地图相对屏幕移动,循环地图有分为横向地图和纵向地图两种。
这里以纵向地图为例研究其实现原理和实际开发的问题:
如图(1)以屏幕中心为原点O建立坐标系,屏幕高度为H0,地图贴图高度为H,第一张地图Map1中心点位置P1,第二张地图Map2中心点位置P2,初始时两张地图拼合在一起放在屏幕某个位置,保证覆盖整个屏幕。
每一帧更新时将两张地图共同移动一定距离,即y坐标共同减小相同大小,距离越大速度越快,当Map1超出屏幕时,即 P1.y+H/2+H0/2<0 时,将Map1至于Map2之上,同理Map2执行相同逻辑操作实现循环滚动。
以上逻辑理想情况下可以达到图(5)中的无缝对接,但实际上会出现图 (4)中的缝隙,缝隙出现的原因是临界上下帧之间地图产生了一次以上的移动,导致对接错开一定距离,因此需要计算错开的距离offset,在对接时加入offset的移动实现真正无缝对接。
Map1超出屏幕时可能产生的offset(offset<=0)值:
@结论:在对接时将对接图片的y坐标额外加上offset即可实现校正,避免缝隙的出现。
0 0
- 2d游戏循环滚动地图中的拼接缝隙问题
- 解决滚屏背景/拼接地图有黑边(缝隙)/动画播放出现毛边以及禁止游戏中自动锁屏问题!
- 【iOS-Cocos2d游戏开发之十八】解决滚屏背景/拼接地图有黑边(缝隙)及禁止自动锁屏问题!
- 【libgdx】2D地图块(tileset)地图出现缝隙(gap / bleeding)的问题
- googleearth地图拼接 拼接缝隙解决办法
- 【iOS-Cocos2d游戏开发之十八】解决滚屏背景/拼接地图有黑边(缝隙)以及禁止游戏中自动锁屏问题
- 【iOS-Cocos2d游戏开发之十八】解决滚屏背景/拼接地图有黑边(缝隙)以及禁止游戏中自动锁屏问题!
- 【iOS-Cocos2d游戏开发之十八】解决滚屏背景/拼接地图有黑边(缝隙)/动画播放出现毛边以及禁止游戏中自动锁屏问题!
- 【iOS-Cocos2d游戏开发】解决滚屏背景/拼接地图有黑边(缝隙)
- Unity3D~2D游戏背景的循环滚动
- 【iOS-Cocos2d游戏开发之十八】解决滚屏背景/拼接地图有黑边(缝隙)/动画播放出现毛边以及禁止游戏中自动锁屏问题!【2011年12月18日补充】
- 【iOS-Cocos2d游戏开发之十八】解决滚屏背景/拼接地图有黑边(缝隙)/动画播放出现毛边以及禁止游戏中自动锁屏问题!【2011年12月18日补充】
- 【iOS-Cocos2d游戏开发之十八】解决滚屏背景/拼接地图有黑边(缝隙)/动画播放出现毛边以及禁止游戏中自动锁屏问题!【2011年12月18日补充】
- 关于滚屏背景/拼接地图有黑边(缝隙)
- 解决滚屏背景/拼接地图有黑边(缝隙)
- 拼接滚动地图-Quick-cocos2dx
- texture packer OpenGL 滚动地图精灵 黑边 缝隙 解决方法
- 【VC++游戏开发#十】2D篇 —— 人工智能(一):滚动地图 & 用鼠标控制人物的走动
- 上拉刷新
- AjaxPro2完整入门教程
- Python在大数据分析及机器学习中的兵器谱
- shell的 关联数组 和 普通数组
- Android手柄焦点控制
- 2d游戏循环滚动地图中的拼接缝隙问题
- JavaAPI之AtomicBoolean
- bzoj4538【HNOI2016】网络
- ES6允许块级作用域的任意嵌套
- AngularJS 风谲云诡的指令
- arm驱动linux异步通知与异步IO
- 各大json的使用
- 十分钟探讨map与hashmap的排序
- MySQL与NULL值有关的问题