资源简介
加载有天空盒模型及动画效果的射击小游戏,
希望大家会对它感到满意
代码片段和文件信息
#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个文件信息
相关资源
- socket编程聊天室C++
- 基于C++用用CBC与ECB模式的DES加解密
- C++多边形有效边填充算法
- MD5算法C++实现
- 傅里叶变换和傅里叶逆变换的C++代码
- 课程设计---c++代码相似度计算
- C++课件PDF
- C++ MFC实现的字符点阵转换工具
- c++ mfc 校园导航 最短路径计算
- Visual C++程序设计学习笔记光盘源码
- 餐厅管理系统 C++,自己随便做做的,
- 学生信息管理系统C++简单教学版
- 用vs2015编译好的百度ocr c++依赖库
- C++基于MFC与ACCESS数据库的成绩管理系
- C++并发编程第二版,中文版
- 抓包源码,有兴趣的拿走
- c++贪吃蛇编程源代码论文设计c语言
- vc++调用usb摄像头,进行拍照,保存为
- C++。电信计费系统
- C++MFC界面美化源代码
- 遥感图像融合C++代码
- 计算机图形学 图形变换 C++ MFC
- 二维码生成 C++
- C++东南大学何洁月课件(总)ppt
- V isual C++ 端口扫描 源代码
- 计算机网络课程设计农大socket实现F
- c++短路电流计算软件设计
- C++五子棋程序带禁手功能
- 是DBSCAN聚类算法的C++实现代码可以运
- VC++6.0编译通过的读写CSV文件的代码及
评论
共有 条评论