Android游戏开发实践之人物移动地图的平滑滚动处理

2019-12-10 20:02:39丽君

如图所示地图在平滑的滚动

Android游戏开发实践之人物移动地图的平滑滚动处理

拓展学习之卡马特地图缓冲算法

这个游戏demo 还不能称之为完美 在与物理层碰撞中还是存在一点问题 不过 最重要的是 没有使用卡马克地图缓冲算法, 下面我详细介绍一个卡马克地图缓冲算法原理。我们需要一张地图换冲图, 为了实现平滑滚动的效果缓冲图的大小应该是手机屏幕宽高 ,这样内存中就会常驻 一张 手机屏幕大小的缓冲图。 如果人物向下方行走则表示地图向上移动,这时候屏幕 将被切割出来了2部分, 上半部分为缓冲图向上移动后的缓冲内容,下半部分则就是我们需要更新地图的部分,将更新后的下半部分与地图缓冲的上半部分结合起来绘制在屏幕中则完成了一 次地图更新,这样可以大大提升游戏绘制地图的效率。如果不使用这种方式来更新地图 则地图每移动一次 都须要双for循环重新一个tile一个tile的绘制一遍效率会很低下。

如图所示 地图向上移动后更新绿色的地图部分 与 将上次缓冲的红色部分结合起来就是新的游戏地图,其它方向原理完全一样。

Android游戏开发实践之人物移动地图的平滑滚动处理

如图所示:如果游戏中可以按右下方式来移动主角 那么以屏幕右下角为圆心 地图就会被切割成4个部分下图中红色区域须要更新其中 3 个部分 地图左边超出的部分 地图下面超出的部分 地图左下方超出的部分,更新的原理和上面一样。

Android游戏开发实践之人物移动地图的平滑滚动处理

这么看来卡马克不愧是个游戏领域的天才,马克地图缓冲算法不愧是最最优秀的地图算法之一,大家如有有兴趣可以去查一查关于卡马特的资料,他确实是一个顶尖的游戏开发工程师。