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

游戏程序设计教程——从游戏引擎构建到实际应用 万立中 万立新 Chapter_06新.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文档。上传文档
查看更多
第6章 理解动画与游戏角色 内容提纲 6.1 理解游戏动画 6.1.1 帧动画与帧图像 6.1.2 帧序列 6.1.3 游戏FPS的设定 6.1.4 帧动画绘制实例 6.1.5 文字动画绘制实例 6.2 游戏中的角色 6.2.1 角色的含义 6.2.2 游戏角色的共性 6.2.3 角色信息的描述 6.3 多角色绘制与控制实例 第6章 理解动画与游戏角色 动画制作的好坏直接影响到游戏角色的表现,同时也会影响到游戏本身的可玩性和受欢迎程度。 游戏动画与一般影视动画的区别: 影视动画是线性动画,一旦制作完成,就只能按照合成后的顺序进行播放; 游戏动画是交互的、非线性的,游戏玩家能够控制游戏角色的行为。 6.1 理解游戏动画 动画产生的机制——人眼的“视觉暂留”效应,也称视觉滞留现象(Visual Staying Phenomenon)。 当人眼看到的影像消失后,影像在人眼仍能继续保留0.1-0.5秒左右; 这种视觉暂留现象正是动画产生的基础; 一般每秒10到12个静态画面的连续播放就足以产生视觉暂留; 每秒可播放的静态画面数就是播放速度,以FPS(Frame Per Second,每秒帧数)作为测量单位,即每秒钟可以播放的帧(Frame)图像数(一帧只包含一个静态图像); 一般的电影是24FPS,电视是30FPS,而游戏动画的速度可能高于或低于这个速度。 很多情况下,可能会低于电影、电视的播放速度。过高的FPS,将意味着更多系统资源的占用; 游戏设计要在画面流畅度和系统资源占用率之间取得平衡。 6.1 理解游戏动画 6.1.1 帧动画与帧图像 帧动画也称为逐帧动画,它是基于连续静态的帧图像的动画,每帧图像代表动画的一个瞬间动作。 影视动画属于帧动画,而游戏设计中也常采用这种动画形式。 帧图像可以保存在每个单帧图片中,但大多情况下是存储在一个单独的图像文件中,绘制某帧图像时,需要从原图中提取出对应的帧图像。 帧图像的排列是有顺序的,这种根据动作规律形成的有序帧图像称为帧序列。 原图中帧图像的排列方式可以是单行、单列或多行多列方式 其实这三种排列方式最终产生的动画效果是没有任何区别的 6.1 理解游戏动画 6.1.2 帧序列 将原图中的帧序列重新组合后播放,可以达到用少量素材产生更丰富效果的目的,这对于游戏设计特别重要。 重新定义帧序列时,帧可以重复、忽略,也可以使用相反的顺序显示等。 原图中的帧就如同拍摄电影的原始胶片,重新定义帧序列就相当于对原始胶片进行剪辑、编辑。 帧序列号其实就是原图中帧图的顺序号,一般从0开始编号; 位图操作类中的PaintFrame()函数专门处理帧动画绘制。 6.1 理解游戏动画 6.1.3 游戏FPS的设定 游戏设计时,设计人员往往要考虑动画播放速度与游戏画面大小的关系; 游戏设计中会在保证游戏流畅度的前提下选择一种合适的画面分辨率; 编写游戏代码时,需要合理地设定FPS,即要到达某一个FPS绘制一个静态画面(即每帧)所需要的具体时间; 衡量绘制每帧图像所花费的时间单位叫做SPF(Second Per Frame,每帧的秒数); SPF与FPS之间是倒数关系,可以使用如下公式计算: SPF = 1000 / FPS(1000为毫秒数)。 T_Engine类中的SetFrame()函数会根据用户传入的参数计算出绘制每一帧所需的间隔时间。代码如下: void SetFrame(int iTime) { IntervalTime = 1000 / iTime; } 6.1 理解游戏动画 6.1.4 帧动画绘制实例 帧图像文件素材:骑马飞奔的完整动画,该动画由保存在同一图片文件中的6张尺寸完全相同的小帧图组成。 【例6-1】利用PaintFrame()函数实现动画绘制的实例。 PaintFrame()函数原型定义: void PaintFrame( HBITMAP in_hbitmap, HDC destDC, int destX, int destY, int FrameCount, int RowFrames, int wFrame, int hFrame, float ratio=1, int rotType=0, BYTE alpha=255 ); 6.1 理解游戏动画 运行结果: 具体实现代码请参见教程 6.1 理解游戏动画 6.1.5 文字动画绘制实例 【例6-2】利用T_Graph类的PaintText()函数在动画上绘制有阴影的滚动文字。 这个实例以例6-1为基础实现,也就是在播放例6-1的骑马飞奔动画的同时,在窗口自下向上显示不断滚动文字,文字的前景色是白色,阴影色是黑色。 具体实现代码请

您可能关注的文档

文档评论(0)

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

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

1亿VIP精品文档

相关文档