`
jishublog
  • 浏览: 898823 次
文章分类
社区版块
存档分类
最新评论

Android 游戏开发之主角的移动与地图的平滑滚动

 
阅读更多
人物移动地图的平滑滚动处理
玩过rpg游戏的朋友应该都知道RPG的游戏地图一般都比较大 今天我和大家分享一下在RPG游戏中如何来处理超出手机屏幕大小的游戏地图。
如图所示为程序效果动画图
http://www.android100.org/uploadfile/2013/0227/20130227105337648.gif



地图滚动的原理
在本人之前博客的文章中介绍过人物在屏幕中的移动方式,因为之前拼的游戏地图是完全填充整个手机屏幕的,所以无需处理地图的平滑滚动。这篇文章我着重的向 大家介绍一下控制人物移动后地图滚动的处理方式。举个例子 如上图所示 比如人物向右移动,如果地图贴在屏幕左边边界 将先移动人物在地图的坐标,当人物在屏幕中超过三分之二后 则将地图向人物行走的反方向移动给玩家一种人物还在向右移动的假象,其实这时候人物只是播放向右行走的动画 在屏幕中的坐标不变 ,当地图向人物行走反方向移动到不能移动的时候 则表示 地图右侧边界已经贴住手机屏幕右侧边界 这样地图则不能在移动 这时候将移动人物在屏幕上的坐标直到人物贴住屏幕右侧边界,其它三个方向原理完全一样。
http://www.android100.org/uploadfile/2013/0227/20130227105341371.gif

代码的实现方式
还是以人物向右移动为例,我们须要三个坐标 一个是m_HeroPos 来保存人物在地图中的X坐标 一个是 mScreenPos 来保存人物在屏幕中的显示坐标 mMapPos 来保存地图在手机屏幕中的显示坐标,按键盘右键后人物在地图中的坐标加上8像素(表示行走的步长),当人物的坐标超过屏幕的三分之二的时候需要检测地图是 否已经在边界, 使用地图绘制在屏幕中的X坐标 加上地图的宽度 判断是否等于屏幕的宽度如果等式不成立 则表示地图可以向左放移动 这时候后人物mScreenPos人物显示坐标将不变 mMapPos地图显示坐标将向左移动人物一个步长的位置,如果之前的等式成立 则表示地图无法在向左移动 这时候mScreenPos人物显示坐标将向右移动人物一个步长的位置 直到屏幕右侧边界 mMapPos地图显示坐标不会改变。其三个方向的移动算法完全一样。
如图所示地图在平滑的滚动
http://www.android100.org/uploadfile/2013/0227/20130227105342723.gif

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

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

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


本文出自 “清源教育” 博客,转载请注明此处,谢谢!

分享到:
评论

相关推荐

    Android 游戏开发之主角的移动与地图的平滑滚动源码

    总之,"Android 游戏开发之主角的移动与地图的平滑滚动源码"这个主题涵盖了Android游戏开发的基础和核心技巧,包括用户交互、动画制作、地图滚动、碰撞检测以及性能优化等多个方面。通过深入学习和实践,开发者可以...

    Android应用源码之主角移动与地图平滑滚动.zip

    在Android应用开发中,涉及到主角移动与地图平滑滚动这一主题,往往是在构建游戏或地图导航类应用时的关键技术。这个"Android应用源码之主角移动与地图平滑滚动.zip"压缩包似乎提供了一些示例代码,尽管标签部分为空...

    android 主角移动与地图平滑滚动

    在Android游戏开发中,主角移动与地图平滑滚动是实现流畅游戏体验的关键技术。这一过程涉及到许多编程概念和技术,包括视口管理、坐标系统转换、帧率优化等。以下是关于这个主题的详细解释: 1. **视口管理...

    安卓Android源码——主角移动与地图平滑滚动.zip

    在安卓Android应用开发中,主角移动与地图平滑滚动是两个关键的技术点,尤其是在游戏或者地图导航类应用中。这份压缩包可能包含了实现这一功能的相关源代码和文档,让我们逐一解析其中可能涵盖的知识点。 首先,...

    Android应用源码之主角移动与地图平滑滚动.zip项目安卓应用源码下载

    Android应用源码之主角移动与地图平滑滚动.zip项目安卓应用源码下载Android应用源码之主角移动与地图平滑滚动.zip项目安卓应用源码下载 1.适合学生毕业设计研究参考 2.适合个人学习研究参考 3.适合公司开发项目技术...

    Android应用源码之主角移动与地图平滑滚动-IT计算机-毕业设计.zip

    在Android应用开发中,"主角移动与地图平滑滚动"是一个常见的功能,尤其在游戏或者地图类应用中。这个主题涵盖了多个重要的编程概念和技术,包括Android SDK的使用、UI设计、事件处理、动画以及数据结构。以下是这个...

    【Android游戏开发】360°平滑游戏摇杆

    【Android游戏开发】360°平滑游戏摇杆是Android平台上实现游戏控制的重要功能,它使得玩家可以通过触摸屏幕自由地操控游戏角色或物体的移动方向。这种设计尤其适用于没有物理导航键的设备,充分利用了Android设备...

    Android 2D游戏引擎AndEngine快速入门教程

    3. 滚动背景:利用ParallaxBackground类可以创建出视觉上的深度感,使背景随主角移动而平滑滚动。 五、事件处理与用户交互 1. TouchEvent:处理触摸屏幕的事件,如点击、拖动等。 2. KeyEvent:处理键盘输入事件,...

    cocos2d-x游戏实例-纵版射击游戏

    进入游戏后,开发者需要创建一个纵版滚动的场景,通常通过TileMap或者SpriteBatchNode实现背景的平滑滚动。同时,主角飞机和敌机的移动与动画效果也需要通过精灵(Sprite)和动作(Action)来实现。玩家通过触摸屏幕...

    MoVeBall Andengine例子

    【MoVeBall Andengine例子】是一个基于Andengine游戏开发框架的示例项目,它展示了如何使用Andengine来创建一个简单的移动球体的游戏。Andengine是一款流行的开源Android游戏开发库,它提供了一系列强大的2D游戏开发...

Global site tag (gtag.js) - Google Analytics