第七章 精灵、帧动画与碰撞检测.pdf

  1. 1、本文档共15页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第七章 精灵、帧动画与碰撞检测

从零开始Android游戏编程(第二版) 第 七章 精灵、帧动画与碰撞检测 第七章 精灵、帧动画与碰撞检测 经过前几章的学习,大 家对使用位图、接受用户控制应该已经有了初步的概念, 也可以运用这些知识完成简单的小游戏。这一章中,我们会为游戏中最重要的部 分——图形处理建立一个基 本的框架,这还不是游戏引擎,但是其中很多方法 可以为读者以后创建自己的游戏引擎提供借鉴。这一章的涉及的内容比较多,既 有2D游戏的基础理论,又有复杂 的代码。尤其是代码部分,如果详细讲解,恐 怕会占用很大的篇幅。所以我们只对关键的函数进行讲解,以方便读者今后灵活 运用这些代码(所有的源代码都与本章 节内容一同提供下载)。 这个框架是完全依照MIDP中javax.microedition.lcdui.game包设计的: Classes GameCanvas Layer LayerManager Sprite TiledLayer game 包中有5个类,其中Layer(层)是一个抽象类,对图形显示作了基本的 定义。以我们的目标游戏《坦克大战》为例,在游戏中有这样一些图形元素:我 方和敌 方的坦克、坦克发出的子弹、地面、墙体、水域掩体等。这些元素虽然 外观不同,但是本质上却非常相似:都是在特定位置以特定尺寸显示一个或一组 位图,有些位 图位置还会变动,Layer就定义了位置,尺寸,显示等相关的功 能。之所以叫做Layer,与游戏中分层地图的概念有关,先让我们了解一下什么 是分层地图:还是说坦克大战,当我们的坦克行驶在普通地面上时,坦克的图像 肯定是覆盖了地面的图像,这样我们能看到坦克。当坦克行驶到掩体时,我们会 发现,掩体的图像覆盖了坦克的图像,如图所示: Linux公社(LinuxIDC.com) 是包括Ubuntu,Fedora,SUSE技术,必威体育精装版IT资讯等Linux专业类网站。 实 际上,我们在程序中,只要首先显示地面的图像,然后显示坦克的图像,最 后显示掩体的图像(掩体图片是镂空的),就能达到这种效果,这就是分层地图。 通常我 们把最下面的叫做地面层,中间的叫做物件层,最上面的叫做天空层。 关于地图我们就讲这么多,这里只介绍图形意义上的分层,是为了帮助大家理解 Layer一 词的意义。关于地图的详细内容我们在第十章会深入讲解。 首先让我们看一下抽象类Layer的定义: package mon; import android.graphics.Canvas; public abstract class Layer { int x = 0; // Layer的横坐标 int y = 0; // Layer的纵坐标 int width = 0; // Layer的宽度 int height = 0; // Layer的高度 boolean visible = true; // Layer是否可见 Layer(int width, int height) { setWidthImpl(width); setHeightImpl(height); } /** Linux公社(LinuxIDC.com) 是包括Ubuntu,Fedora,SUSE技术,必威体育精装版IT资讯等Linux专业类网站。 * 设定Layer的显示位置 * * @param x * 横坐标 * @param y * 纵坐标

文档评论(0)

f8r9t5c + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8000054077000003

1亿VIP精品文档

相关文档