让人感动的地图过程平滑滚动

        玩过rpg朋友应该都知道RPG的游戏地图一般都比較大 今天我和大家分享一下在RPG游戏中怎样来处理超出手机屏幕大小的游戏地图。

如图所看到的为程序效果动绘图
地图滚动的原理        在本人之前博客的文章中介绍过人物在屏幕中的移动方式,由于之前拼的游戏地图是全然填充整个手机屏幕的,所以无需处理地图的平滑滚动。

这篇文章我着重的向大家介绍一下控制人物移动后地图滚动的处理方式。举个样例 如上图所看到的 比方人物向右移动,假设地图贴在屏幕左边边界  将先移动人物在地图的坐标,当人物在屏幕中超过三分之二后 则将地图向人物行走的反方向移动给玩家一种人物还在向右移动的假象。事实上这时候人物仅仅是播放向右行走的动画
在屏幕中的坐标不变 ,当地图向人物行走反方向移动到不能移动的时候 则表示 地图右側边界已经贴住手机屏幕右側边界 这样地图则不能在移动 这时候将移动人物在屏幕上的坐标直到人物贴住屏幕右側边界。其他三个方向原理全然一样。

上一章学习了

p=1039" rel="bookmark">Android研究之游戏开发之进度条载入不明确的能够去看下。

代码的实现方式还是以人物向右移动为例,我们需要三个坐标 一个是m_HeroPos 来保存人物在地图中的X坐标  一个是 mScreenPos 来保存人物在屏幕中的显示坐标 mMapPos 来保存地图在手机屏幕中的显示坐标,按键盘右键后人物在地图中的坐标加上8像素(表示行走的步长),当人物的坐标超过屏幕的三分之二的时候需要检測地图是否已经在边界。 使用地图绘制在屏幕中的X坐标
加上地图的宽度 推断是否等于屏幕的宽度假设等式不成立 则表示地图能够向左放移动 这时候后人物mScreenPos人物显示坐标将不变 mMapPos地图显示坐标将向左移动人物一个步长的位置,假设之前的等式成立 则表示地图无法在向左移动  这时候mScreenPos人物显示坐标将向右移动人物一个步长的位置  直到屏幕右側边界 mMapPos地图显示坐标不会改变。其三个方向的移动算法全然一样。

如图所看到的地图在平滑的滚动
拓展学习之卡马特地图缓冲算法这个游戏demo 还不能称之为完美 在与物理层碰撞中还是存在一点问题 只是 最重要的是 没有使用卡马克地图缓冲算法,以下我具体介绍一个卡马克地图缓冲算法原理。我们须要一张地图换冲图, 为了实现平滑滚动的效果缓冲图的大小应该是手机屏幕宽高 。这样内存中就会常驻 一张 手机屏幕大小的缓冲图。 假设人物向下方行走则表示地图向上移动。这时候屏幕
将被分割出来了2部分, 上半部分为缓冲图向上移动后的缓冲内容,下半部分则就是我们需要更新地图的部分,将更新后的下半部分与地图缓冲的上半部分结合起来绘制在屏幕中则完毕了一次地图更新,这样能够大大提升游戏绘制地图的效率。假设不使用这样的方式来更新地图 则地图每移动一次 都需要双for循环又一次一个tile一个tile的绘制一遍效率会非常低下。如图所看到的  地图向上移动后更新绿色的地图部分 与 将上次缓冲的红色部分结合起来就是新的游戏地图,其他方向原理全然一样。

" class="size-full wp-image-1048 aligncenter" alt="Android研究之游戏开发主角与地图的滚动(七) - 第4张 | 成功智慧网-专注游戏编程开发!

" src="http://www.cgzhw.com/wp-content/uploads/2014/07/219.jpg" style="">

       如图所看到的:假设游戏中能够按右下方式来移动主角 那么以屏幕右下角为圆心 地图就会被分割成4个部分下图中红色区域需要更新当中 3 个部分 地图左边超出的部分 地图以下超出的部分 地图左下方超出的部分。更新的原理和上面一样。
       这么看来卡马克不愧是个游戏领域的天才,马克地图缓冲算法不愧是最最棒的地图算法之中的一个。大家如有有兴趣能够去查一查关于卡马特的资料,他确实是一个顶尖的游戏开发project师。

欢迎大家下载阅读。还是那句老话每篇文章都会附带源码的下载地址。

最后假设你还是认为我写的不够具体 看的不够爽 不要紧我把源码的下载地址贴出来 欢迎大家一起讨论学习雨希望能够和大家一起进步。

源代码下载:heromove

版权声明:本文博客原创文章,博客,未经同意,不得转载。

Android游戏开发研究与主角在地图滚动的更多相关文章

  1. Android游戏开发研究帧动画实现

     1.动画的原则框架        帧的动画帧的动画顾名思义,画就是帧动画. 帧动画和我们小时候看的动画片的原理是一样的,在同样区域高速切换图片给人们呈现一种视觉的假象感觉像是在播放动画,事实上只 ...

  2. Android游戏开发基本知识

    Android游戏开发 手机游戏被业内人士称为继短信之后的又一座金矿.Android虽然基于Java,但是其虚拟机是基于寄存器的,速度得到了很大的提升,这为Android平台上开发游戏提供了坚强的后盾 ...

  3. Android游戏开发实践(1)之NDK与JNI开发03

    Android游戏开发实践(1)之NDK与JNI开发03 前面已经分享了两篇有关Android平台NDK与JNI开发相关的内容.以下列举前面两篇的链接地址,感兴趣的可以再回顾下.那么,这篇继续这个小专 ...

  4. Android游戏开发实践(1)之NDK与JNI开发01

    Android游戏开发实践(1)之NDK与JNI开发01 NDK是Native Developement Kit的缩写,顾名思义,NDK是Google提供的一套原生Java代码与本地C/C++代码&q ...

  5. Android游戏开发实践(1)之NDK与JNI开发02

    Android游戏开发实践(1)之NDK与JNI开发02 承接上篇Android游戏开发实践(1)之NDK与JNI开发01分享完JNI的基础和简要开发流程之后,再来分享下在Android环境下的JNI ...

  6. Android游戏开发实践(1)之NDK与JNI开发04

    Android游戏开发实践(1)之NDK与JNI开发04 有了前面几篇NDK与JNI开发相关基础做铺垫,再来通过代码说明下这方面具体的操作以及一些重要的细节.那么,就继续NDK与JNI的学习总结. 作 ...

  7. [Android游戏开发]八款开源 Android 游戏引擎 (巨好的资源)

    初学Android游戏开发的朋友,往往会显得有些无所适从,他们常常不知道该从何处入手,每当遇到自己无法解决的难题时,又往往会一边羡慕于 iPhone下有诸如Cocos2d-iphone之类的免费游戏引 ...

  8. Android游戏开发之旅 View类详解

    Android游戏开发之旅 View类详解 自定义 View的常用方法: onFinishInflate() 当View中所有的子控件 均被映射成xml后触发 onMeasure(int, int) ...

  9. 《Android游戏开发详解》一1.7 控制流程第1部分——if和else语句

    本节书摘来异步社区<Android游戏开发详解>一书中的第1章,第1.7节,译者: 李强 责编: 陈冀康,更多章节内容可以访问云栖社区"异步社区"公众号查看. 1.7 ...

随机推荐

  1. Android访问服务器(TOMCAT)乱码引发的问题

    1.浏览器往服务器发送的请求主要可分为2种:get.post:delete.head等不赘述. GET方式: 从浏览器上直接敲地址,最大特点就是参数直接跟在地址后面. POST方式:表单提交等. 2. ...

  2. 开源Math.NET基础数学类库使用(08)C#进行数值积分

    原文:[原创]开源Math.NET基础数学类库使用(08)C#进行数值积分               本博客所有文章分类的总目录:http://www.cnblogs.com/asxinyu/p/4 ...

  3. 一个用于每一天JavaScript示例-使用缓存计算(memoization)为了提高应用程序性能

    <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...

  4. [改变自己wordpress.2]给wordpress加上简单debug sql调试.

    或者说,同事. 需要帮她打印出来sql 调试输出到页面sql 在这里,我们使用插件或一个的方式来启动配置文件wordpress的debug 在插件文件夹 wordpress/wp-content/pl ...

  5. c++日历v1.0版本

    #include<iostream> # include<fstream> #include<time.h> #include<string> #inc ...

  6. 《学习opencv》笔记——矩阵和图像处理——cvMax,cvMaxS,cvMerge,cvMin and cvMinS

    矩阵和图像操作 (1)cvMax函数 其结构 void cvMax(//比較两个图像取最大值 const CvArr* src1,//图像1 const CvArr* src2,//图像2 CvArr ...

  7. php中国的垃圾问题

    header这条线加,这是解决中国乱码的问题. 版权声明:本文博主原创文章,博客,未经同意不得转载.

  8. Android4.0 Design之UI设计缺陷1

    我想成为Android卓越发展project联赛,不知道Android它如何设计规则,Android4.0谷歌公司的问世后Android一系列的设计原则,程序猿规范,不要盲目模仿IOS它的设计,由于A ...

  9. swift类名称显示变量

    <span style="background-color: rgb(255, 255, 255); color: rgb(51, 51, 51); font-family: Aria ...

  10. 国内Android应用推广的六大主流方式

    国内Android应用推广的六大主流方式 http://mobi.baike.com/article-19433.html 随着Android市场份额的飞速增长,越来越多的国内开发团队和公司開始投入A ...