XNA那些事(八)-WINDOWS PHONE游戏中的摄像机全总结

来源:互联网 发布:nginx openresty 编辑:程序博客网 时间:2024/05/16 02:08

    我们的博客写到这需要总结一下了,因为咱们已经说过了游戏的框架,精灵的概念,2D及3D的建模过程,摄像机的基本使用方式,可以说XNA甚至是其它的3D游戏框架基本的东西都在这系列的博客向大家做了介绍.

    那么说过了理论,下面就要和大家探讨一下我在真正项目中的一些心得与体会,尽量使大家能够有一定切实的提高。
    首先我们还是来说一下摄像机,这里给两张游戏的截图,大家一起来看一下在真正的游戏当中摄像机是如何工作的,


   

 在第一视角游戏当中,摄像机在都是一个特别重要的概念,原因很简单其实他就是玩家所控制的主视角,而且随着玩家控制的人物(CS)汽车(NFS)的位移而改变。那么我们就来讨论一在第一视角的项目中摄像机的几个特点:
一、一般来说这个摄像机的对象都是按照设计模式当中的单例模式创建的。
二、一般来说摄像机的动作并不是简单的平移,旋转,而是平移与旋转等基本动作的累加,一个简单的例子,在NFS当中转动方向盘,其实就是平移+旋转的叠加,而CS当中跳跃的动作虽然是单纯的上下平移,但是在平移的过程中移动的速度是不断变化的需要分步完成。说到这读者也应该会想到,应该把这些动作封装好,以供摄像机类调用。
三、第一视角摄像机还与一个概念需要交互,那就是路径,如果NFS当中玩家控制的车一般不能驶出了道路就不能再走了,CS当中玩家控制的人物已经退到了墙角就不能再向后移动了,在空间中定义哪里是可能行驶的位置也就是合法的路径就非常重要了。
说到这里我们基本上就可以知道一个第一视角摄像机的位置更新是由摄像机的当前位置,路径及玩家选择做出的动作共同决定的。
    另外一些RPG游戏也就是第三视角游戏当中摄像机类的设计没有第一视角来的复杂,他的建模过程是这样的,你可以把RPG游戏中玩家控制的人物加入动作及路径的概念,然后确定了人物的位置之后再把人物的位置映射给摄像机就可以了。
在实际的项目当中还有一点需要提到的是2D与3D的混合渲染:这点XNA做得相当的方便,我们还是举一个实况足球的例子,我们看到屏幕右上方比分的标志或者是比显不是通过3D渲染得到的。


    这里有一个原则就是在GAME的DRAW函数当中一定要把所有的3D渲染工作完成之后,再把渲染2D的TEXTURE部分就可以了。也就是先要得到3D的图像,再把2D的图形绘制在已经绘制好的3D图像上。
    好了,总结完了摄像机之后,下一次咱们就要说到更高阶的粒子系统方面的知识了。但是在这之前希望各位读者一定要把之前的基础搞好。
   

原创粉丝点击