ANDROID游戏碰撞原理.doc_第1页
ANDROID游戏碰撞原理.doc_第2页
ANDROID游戏碰撞原理.doc_第3页
ANDROID游戏碰撞原理.doc_第4页
ANDROID游戏碰撞原理.doc_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

。ANDROID游戏碰撞原理游戏碰撞的大致可以分为这几种类1.主角与边界的碰撞,限制主角不能走出手机屏幕外。2.主角与物理层的碰撞,与地图中的房子桌子 椅子等等。3.主角与游戏人物之间的碰撞,这里指NPC等。4.主角与脚本框发生的碰撞,例如走进房间出线一段剧情对话等等。由此可见游戏中的碰撞主要是可以分为1.点与矩形之间的碰撞2.矩形与矩形之间的碰撞3.圆形与圆形之间的碰撞4.圆形与矩形之间的碰撞 今天我主要介绍一下以上中最特殊的一个碰撞方式主角与物理层之间的碰撞。如 图所示:每个小方块中储存着地图块的信息,在二位数组中如果为-1表示属于物理层不可通过,其它均可通过。也就是说-1 这个地图块的位置绘制这物理层的东西。主角在行走的时候通过自己的坐标原点计算出自己在二位数组中的索引,然后根据索引找到数组中的数值判断自己是否可以通过。绘制地图根据地图编辑器生成出来的数组,一定是先绘制背景层地图,然后在绘制第物理地图等等。物理碰撞层生成的数组是不用绘制的,只需要每次主角移动坐标的时候检测是否与物理层发生碰撞.背景底层物理层碰撞层说到这里可能有些朋友会问为什么第一层要和第二层分开?这两层不能合二为一吗?如图所示:用两个图层主要是为了解决物理层图片不能全部显示,好比下面这个荷花,它的绘制区域在矩形中周围白色的则是透明的区域,所以我们需要先绘制地图背景层在绘制物理层这样就可以遮盖透明区域。代码的实现方式首先我们需要利用onKeyDown()和onKeyUp()方法确定当前手机那个按键被按下,根据按键信息更新人物动画,检测是否碰撞。mIskeyDown = true 表示 按下方向键下mIskeyLeft = true 表示 按下方向键左mIskeyRight = true 表示 按下方向键右mIskeyUp = true 表示 按下方向键上mHeroPosX 表示人物的X坐标mHeroPosY 表示人物的Y坐标mAnimationState 表示播放动画的ID 因为人物行走有4组方向的动画 所以 mAnimationState 可以修改播放那组动画view plain/*根据按键更新显示动画*/*在碰撞数组中寻找看自己是否与地图物理层发生碰撞*/if(mIskeyDown)mAnimationState=ANIM_DOWN;mHeroPosY+=HERO_STEP;elseif(mIskeyLeft)mAnimationState=ANIM_LEFT;mHeroPosX-=HERO_STEP;elseif(mIskeyRight)mAnimationState=ANIM_RIGHT;mHeroPosX+=HERO_STEP;elseif(mIskeyUp)mAnimationState=ANIM_UP;mHeroPosY-=HERO_STEP;主角每次移动的时候我们还需要检测一下他的X Y坐标是否超出屏幕 如果超出屏幕则保持他目前的位置不变view plain/*检测人物是否出屏*/isBorderCollision=false;if(mHeroPosX=mScreenWidth)mHeroPosX=mScreenWidth;isBorderCollision=true;if(mHeroPosY=mScreenHeight)mHeroPosY=mScreenHeight;isBorderCollision=true;主角应该有两个坐标点 如图所示: 为什么主角要有2个坐标点的原因是 左上角的00点程序是不能进行逻辑判断的比如检测主角向右移动走超出屏幕,因为坐标点在左上角所以整个图片都走出屏幕以后程序才能判断出人物出屏,所以不能用左上角的点来作为主角的坐标原点,须要用下面的点来计算人物的逻辑坐标我的建议是我们只计算下面这个点然后根据这个点在算出来图片左上角的原点,然后在通知图像绘制。判断碰撞检测mCollision这个二维数是地图编辑器生成出来的,用来组保存碰撞层的所有信息 -1表示不能通过mHeroIndexX 、mHeroIndexY 代表当前人物在二位数组中的索引位置,根据索引找到二维数组中的值判断是否碰撞mBackHeroPosX、mBackHeroPosY 备份发生碰撞前人物的坐标一旦碰撞以后将使用备份的坐标避免人物碰撞后不能返回。view plainif(mCollisionmHeroIndexYmHeroIndexX=-1)mHeroPosX=mBackHeroPosX;mHeroPosY=mBackHeroPosY;isAcotrCollision=true;elsemBackHeroPosX=mHeroPosX

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论