游戏程序设计教程——从游戏引擎构建到实际应用 万立中 万立新 Chapter_07新.pptVIP

游戏程序设计教程——从游戏引擎构建到实际应用 万立中 万立新 Chapter_07新.ppt

  1. 1、本文档共22页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第7章 为引擎添加游戏角色模块 内容提纲 7.1 关于图层的概念 7.2 构建游戏图层类 7.3 创建游戏角色类 7.3.1 游戏角色类的设计 7.3.2 游戏角色类的实现 7.4 为游戏角色类添加AI控制 7.4.1 AI类的基本需求与设计 7.4.2 AI类的实现 7.5 游戏角色类及AI类应用实例 第7章 为引擎添加游戏角色模块 游戏角色是图层,游戏背景或游戏地图、子弹、爆炸效果等也都是图层。这些与游戏内容相关的各图层构成了完整的游戏场景。 从面向对象的角度来看,游戏角色、游戏地图或背景等可以进一步抽象为游戏图层。 在构建游戏角色类之前,我们首先要设计更抽象的游戏图层类,在其中定义游戏图层共有的属性或函数,然后再从图层类派生出游戏角色类。 7.1 关于图层的概念 一个完整的游戏场景是由若干游戏图层叠加而成。 游戏状态的每一次更新,组成场景的各图层,如果有位置或状态变化,要按照游戏逻辑在场景中重新合成,以反映最新游戏状态。 图层绘制到屏幕时,会有先后顺序,这就是所谓的Z-Order 后绘制的图层总是在先绘制的图层之上。 游戏图层绘制时,要处理好各图层之间的Z-Order,尤其是游戏中存在前景、背景的情况下,要处理好图层之间的被遮挡关系。 游戏图层除了Z-Order属性外,每个图层都有自己的宽、高属性、坐标位置,有时图层还要设置是否可见。 为了标识图层类型,可以为图层设置一个标识,这样在处理时可以作为判断的依据。 对于图层操作,从抽象角度看,有两个通用操作: (1)绘制:每个图层都要绘制,只是绘制的具体步骤或方法不同; (2)移动:如果图层是游戏角色、子弹、地图等都会用到移动操作。 7.2 构建游戏图层类 图层类将作为抽象基类 图层类命名为T_Layer 图层类将分别在T_Layer.h和T_Layer.cpp中实现 T_Layer类的定义和实现:实现代码请参见教程 类中定义的Draw()纯虚函数,是为了规定所有派生类必须具备该操作,同时也是为后续编写场景管理类做准备 7.3 创建游戏角色类 7.3.1 游戏角色类的设计 游戏角色类命名为T_Sprite。 T_Sprite类主要涉及游戏角色3个方面处理: 图像处理:主要包括图像加载、绘制及动画处理。在动画处理方面,涉及帧图像旋转与翻转、帧图像缩放或透明度修改、帧图像绘制等 状态处理:T_Sprite类除继承T_Layer类的数据成员外,还增加了角色特有的数据成员,如移动方向、移动速度、游戏分值、游戏等级等 碰撞检测:NPC之间的碰撞、玩家角色与NPC之间的碰撞、NPC或玩家角色与游戏地图中障碍物的碰撞 碰撞检测的方法有: 区域检测、点检测及像素检测等。 其中像素检测精度最高,但也是处理速度最慢的检测手段。 在一般游戏中,使用区域检测就足以满足需求,这种检测方式速度快,只是有时会判断不够准确。 7.3 创建游戏角色类 7.3.2 游戏角色类的实现 T_Sprite类的定义和实现:实现代码请参见教程 T_Sprite类的数据成员按照功能需求分为三个类别: 与角色图像相关的属性 与角色状态相关的属性 与碰撞检测相关的属性 T_Sprite类的函数说明: 3个调用频率高的函数以内联方式实现: AdjustCollideRect() GetCollideRect() CollideWith() 其它要实现的函数共有7个: T_Sprite类构造函数 Initiate() LoopFrame() LoopFrameOnce() Draw() MoveTo() GetDir() 7.3 创建游戏角色类 补充:T_Util通用工具类的实现 T_Util通用工具类是一个简单的类,目前只有两个函数: int_to_wstring() 类型转换函数 GetBevelSpeed() 计算函数 新建T_Util.h头文件和对应的T_Util.cpp源文件,它们也将作为游戏引擎的附加组成部分。 7.3 创建游戏角色类 T_Util.h头文件代码: #pragma once #include T_Config.h“ class T_Util { public: static wchar_t * int_to_wstring(int i); // 根据输入的三个参数所指定的起点、终点坐标和移动速度, // 计算斜角移动时X轴与Y轴的分量值, // xRatio与yRatio为输出参数, 即最终计算结果 // 本函数会自动判断方向: // xRatio、yRatio为正值,表示朝右、下移动 // xRatio、yRatio为负值,表示朝左、上移动 static void GetBevelSpeed(

您可能关注的文档

文档评论(0)

带头大哥 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档