现在的位置: 首页 > 综合 > 正文

DirectX 9.0c游戏开发手记之“龙书”第二版学习笔记之3: Chap5: Timing, Direct Input, and Animation and Sprites

2019年11月14日 ⁄ 综合 ⁄ 共 983字 ⁄ 字号 评论关闭

    这一期我们来讲第5章的习题。在此先回顾一下这一章的内容。

    这一章仍旧没有触及3D图形的绘制,但是讲了几个比较重要的概念:

1、  获取当前的FPS(FramessPer Second,就是常说的是帧率);

2、  基于时间差来进行图形变换(这里是2D图形的变换;后来一般用于3D图形的变换);

3、  介绍DirectInput,让游戏程序支持鼠标和键盘的输入响应;

4、  介绍如何使用ID3DXSprite接口来绘制2D sprites;

5、  如何用一幅textureatlas来实现简单的、持续时间短暂或者不断循环的动画效果。

 

    前面3点暂时没什么好说的,需要说的话会在以后适当的地方进行提及的。至于4,我觉得这应该花上更多的篇幅来讲的,毕竟即使是3D游戏中,有一些2D元素也是很有用的,比如说你可以在3D游戏中插入一个小游戏,而这种小游戏以2D的形式进行操作是比较方便的。另外,利用ID3DXSprite可以实现所谓的Billboard技术,这种东西在很多方面是很有用的,而一般的3D纹理映射方式又实现不了(比如说你想在游戏世界的天空上挂上一个太阳,那么最好是将一个平面的、圆形的太阳图形“附在”一个点(也就是sprite)上面,而不是建立一个球体,然后将一张正方形的太阳纹理展开图“铺在”球面上)。

    可惜的是,不论是龙书还是其第二版上都没有讲这种技术。大家可以参考一些其他的3D游戏编程入门书籍。

 

    好啦,现在开始讲习题部分了!

 

    这一章有5个习题。其实都是针对那个SpriteDemo程序的,于是我想合在一起做,最终想编出一个值得一玩的2D飞行射击小游戏。这其中的艰辛自不必说,花费了好几天的功夫,还算有点成就,就是前3道习题已经搞定了(当然操作方式与题目要求略有不同;具体的操作大家运行一下程序就知道了,一开始有一个MessageBox来说明操作以及游戏的目标)。并且,还实现了比较友好的“碰壁反弹”功能。不过还是有一些bug的,至今不知道怎么解决,希望有高人来解惑!

    Bug就是就是敌方post的识别有点问题,post导弹的射击有点问题,还有就是飞船打不坏敌方的post。
    这是游戏运行时的截图:
 
    附:第5章的“改进版”飞行射击小游戏下载地址:
点击打开链接
 
    由于有暂时无法解决的bug存在,那么第4题暂时也就无从谈起了。至于第5题,我觉得作者是太乐观了……呜呜

抱歉!评论已关闭.