由于最近一直在学习directx,为了不让自己感觉枯燥,于是应用自己所学,写了个魔方游戏,好了下面就给出几张图片
好了开始讲下我的游戏思路,首先得渲染出27个立方体,并且附上纹理,接着就是本游戏的核心,主要用到了鼠标拾取技术,通过鼠标的点击和移动来判断哪9个立方体实现旋转,如下是游戏的核心代码,由于代码较多我就只截一次上面9个立方体旋转的代码,其他都是雷同的,
接着就是代码的思路,首先通过鼠标拾取我们已经得到了鼠标的位置,如果是上面的话,鼠标的Y坐标对应的只就在1.0到3.0之间,这里我还用到了D3DXPlaneFromPoints()这个函数,主要是为整个大的立方体创建六个面,
当鼠标左右移动时,即可旋转魔方。(这里再讲一点由于魔方旋转导致矩阵也跟着旋转,为了方便,我就用了一个笨方法将矩阵还原了,就是最后一张照片里的矩阵的赋值)好了就讲到这里了。
最后讲一下本实例的缺点:
1:首先由于我是刚开始学的DX,对好多东西都不熟悉,c++也不是很好,所以很多程序都写的很简单,程序很长,呵呵
2:由于只是个Demo,很多功能没有实现,只是把我最近学的D3D知识巩固了下,我也没有深入完善。
3:如果有人运行这个程序会发现一个BUG,就是当你玩这个魔方是你的鼠标只能水平向一个方向移动,如果你手抖了一下,魔方就会乱套,这与我编写的代码有关,其实是与我的能力有关,我实在想不出怎么解决它,呵呵,另外该魔方只能往一个方向旋转,(其实可以解决,只是我闲代码太多,就没加),如果谁有兴趣可以改进。
4:由于是第一次写这么长的代码,所以程序有些地方写的不怎么好,尤其是主函数显得格外长,我没有把相同的代码用函数封装起来,我比较懒 呵呵;
总之如果你小心一点,本游戏还是可以玩的,里面的代码还是能够帮助那些想学DX的和我一样的初学者,至少我是这么过来的,
(忘了给出玩法,主要用到鼠标左键来旋转,ASDW控制摄像机,QE左右旋转,RF上下移动)最后附上完整代码