资源简介
加载有天空盒模型及动画效果的射击小游戏,
希望大家会对它感到满意

代码片段和文件信息
#include “Bullet.h“
//构造函数
//入口参数1:D3D设备接口指针
//入口参数2:位置坐标向量
//入口参数3:初始方向向量
Bullet::Bullet( LPDIRECT3DDEVICE9 pD3ddevice
GameSound *pGameSound
PCSTR pFileName
const D3DXVECTOR3 &vPosition
const D3DXVECTOR3 &vDir ) : MeshManager(pD3ddevice)
m_fPrimeSpeed(10.0f)
m_fGrating(0.3f)
m_fGravityAcc(0.0008f)
m_vGravityDir(0.0f-1.0f0.0f)
{
m_pGameSound = pGameSound;
//读取X文件
if( FAILED( LoadXFile(pFileName) ))
{
MessageBox(NULLTEXT(“LoadBulletXFile is Failed“)TEXT(“Error“)MB_OK);
exit(1);
}
//读取纹理
if( FAILED( D3DXCreateTextureFromFile( m_pD3ddevice TEXT(“wow070.jpg“) &m_pTexBullet ) ))
{
MessageBox(NULLTEXT(“CreateBulletTexture is Failed“)TEXT(“Error“)MB_OK);
exit(1);
}
m_vPosition = vPosition;
m_fCurrentSpeed = m_fPrimeSpeed;
m_fGravitySpeed = 0.0f;
m_vDir = vDir;
m_vAlpha = D3DXVECTOR4(1.0f 1.0f 1.0f 1.0f);
m_bIsCollide = false;
m_bIsDisappear = false;
D3DXMatrixScaling( &m_matScal 1.0f 1.0f 1.0f );
D3DXVECTOR3 *pVB = NULL;
D3DXVECTOR3 vCenterPos;
m_pMesh->LockVertexBuffer(0 (PVOID*)&pVB);
if(FAILED( D3DXComputeBoundingSphere(pVB
m_pMesh->GetNumVertices()
D3DXGetFVFVertexSize(m_pMesh->GetFVF())
&vCenterPos
&m_fRadius) ))
{
MessageBox(NULLTEXT(“ComputeBoundingSphere is Failed“)TEXT(“Error“)MB_OK);
exit(1);
}
//将半径值减小一些
m_fRadius -= 0.5f;
m_pMesh->UnlockVertexBuffer();
}
Bullet::~Bullet()
{
SAFE_RELEASE(m_pTexBullet);
}
//移动
//入口参数:无
//返回值:无
VOID Bullet::Move(float fTime)
{
fTime *= 0.1f;
if(m_fCurrentSpeed == 0.0f)
{
fTime = 0.0f;
}
m_vDir *= (m_fCurrentSpeed+fTime);
D3DXVECTOR3 fTempGraDir = m_vGravityDir * (m_fGravitySpeed+fTime);
m_vDir += fTempGraDir;
D3DXVec3Normalize( &m_vDir &m_vDir );
m_fGravitySpeed += m_fGravityAcc;
m_vPosition += m_vDir;
}
//重新设置子弹的属性
//入口参数1:新坐标的向量
//入口参数2:新的方向向量
//返回值:无
VOID Bullet::Reset( D3DXVECTOR3 vPos D3DXVECTOR3 vDir )
{
m_vPosition = vPos;
m_fCurrentSpeed = m_fPrimeSpeed;
m_fGravitySpeed = 0.0f;
m_vDir = vDir; //子弹方向
m_vAlpha = D3DXVECTOR4(1.0f 1.0f 1.0f 1.0f); //透明值
m_bIsDisappear = false; //表示是否消失
m_bIsCollide = false; //表示是否撞墙
}
//子弹撞墙后改变状态
//入口参数1:碰撞到的面的法线
//入口参数2:子弹碰撞的信息
//返回值:无
VOID Bullet::ChangeState( const D3DXVECTOR3 &vNor int iFace )
{
m_bIsCollide = true;
if( iFace == CLMAP )
{
//播放声音
m_pGameSound->PlaySound( TEXT(“BOUNCE“) false );
m_vDir = ReflectVector(vNor);
m_fGravitySpeed = 0.0f; //增大子弹的重力速度
m_fCurrentSpeed *= m_fGrating; //减少子弹的速度
if(m_fCurrentSpeed <= 0.002f)
{
m_fCurrentSpeed = 0.0f;
}
}
}
//绘制
//入口参数:无
//返回值:如函数调用成功则返回S_OK否则返回E_FAIL
HRESULT Bullet::Draw(VOID)
{
D3DXMATRIXA16 matTranf;
D3DXMatrixIdentity(&matTranf);
matTranf(30) = m_vPosition.x;
matTran
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 496195 2007-04-18 17:10 EasyGame\ammo.x
文件 17134 2007-04-18 17:10 EasyGame\ammo_bounce.wav
文件 45104 2007-04-18 17:10 EasyGame\ammo_fire.wav
文件 4585 2007-05-16 13:52 EasyGame\Bullet.cpp
文件 1682 2007-05-12 01:32 EasyGame\Bullet.h
文件 4771 2007-05-11 23:22 EasyGame\CameraCraft.cpp
文件 1707 2007-05-12 03:24 EasyGame\CameraCraft.h
文件 1118 2007-05-12 00:58 EasyGame\DefaultHead.h
文件 247330 2007-04-18 17:10 EasyGame\droid_destroyed.wav
文件 1531904 2007-05-16 14:44 EasyGame\EasyGame.exe
文件 1567744 2009-02-24 15:23 EasyGame\EasyGame.ncb
文件 905 2007-04-27 21:01 EasyGame\EasyGame.sln
..A..H. 10240 2009-02-24 15:23 EasyGame\EasyGame.suo
文件 4340 2007-04-30 00:30 EasyGame\EasyGame.vcproj
文件 2249 2007-05-12 02:33 EasyGame\EnemyCraft.cpp
文件 1232 2007-04-30 01:35 EasyGame\EnemyCraft.h
文件 115822 2007-04-18 17:10 EasyGame\EvilDrone-low.x
文件 13322 2007-04-18 17:10 EasyGame\EvilDrone_Diff.jpg
文件 11234 2007-05-12 03:50 EasyGame\GameCanvas.cpp
文件 1809 2007-04-30 01:01 EasyGame\GameCanvas.h
文件 12261 2007-05-16 14:43 EasyGame\GameMap.cpp
文件 1684 2007-05-16 14:39 EasyGame\GameMap.h
文件 5110 2007-04-30 01:18 EasyGame\GameSound.cpp
文件 663 2007-04-30 00:59 EasyGame\GameSound.h
文件 1008519 2007-04-26 00:46 EasyGame\gazebo01.x
文件 12344 2003-06-03 19:58 EasyGame\height64.bmp
文件 3420 2007-04-28 00:06 EasyGame\Input.cpp
文件 1218 2007-04-27 10:28 EasyGame\Input.h
文件 838 2007-04-25 21:07 EasyGame\Main.cpp
文件 49208 2003-06-27 09:31 EasyGame\map128.bmp
............此处省略29个文件信息
相关资源
- 国际象棋的qt源代码
- C++中头文件与源文件的作用详解
- C++多线程网络编程Socket
- VC++ 多线程文件读写操作
- 利用C++哈希表的方法实现电话号码查
- 移木块游戏,可以自编自玩,vc6.0编写
- C++纯文字DOS超小RPG游戏
- VC++MFC小游戏实例教程(实例)+MFC类库
- 连铸温度场计算程序(C++)
- 6自由度机器人运动学正反解C++程序
- Em算法(使用C++编写)
- libstdc++-4.4.7-4.el6.i686.rpm
- VC++实现CMD命令执行与获得返回信息
- 白话C++(全)
- C++标准库第1、2
- 大数类c++大数类
- C++语言编写串口调试助手
- c++素数筛选法
- C++ mqtt 用法
- 商品库存管理系统 C++ MFC
- c++ 多功能计算器
- C++17 In Detail
- 嵌入式QtC++编程课件
- 颜色识别形状识别STM103嵌入式代码
- c++ 邮件多附件群发
- c++ 透明代理(hookproxy)
- mfc 调用redis
- FTP客户端源码(c++)
- c++ 画图(14Qt-XPS)
- c++多边形交并差运算
评论
共有 条评论