使用XNA引擎做3D赛车小游戏..(1)
本文使在界面上显示一辆汽车 = _ =
- 首先新建一个Car类,导入XNA框架包:
-
using Microsoft.Xna.Framework.Graphics;
-
using Microsoft.Xna.Framework.Content;
-
using Microsoft.Xna.Framework;
-
- 在Car类中增加成员变量:
-
Model model = null; // 读入car.x文件中的汽车保存到CarModel中
-
public Matrix projection; // 车的投影矩阵
-
public Matrix view; // 车的取景矩阵
-
public float carLocation = 2.5f; // 车中心位置的X坐标值
-
- 为model写一个setter方法:
-
public Model CarModel
-
{
-
set
-
{
-
model = value;
-
}
-
}
-
- 增加一个CarDraw方法(这命名似乎不怎么规范) 用于在世界中绘制汽车:
-
public void CarDraw(GameTime gameTime)
-
{
-
foreach (ModelMesh mesh in model.Meshes)
-
{
-
foreach (BasicEffect effect in mesh.Effects)
-
{
-
effect.EnableDefaultLighting(); //默认灯光和材质
-
effect.World = Matrix.CreateScale(0.85f, 0.85f, 0.85f) //汽车尺寸放大0.85倍
-
* Matrix.CreateTranslation(carLocation, 1.5f, -3.0f); //汽车位置
-
effect.View = view; //观察变换矩阵
-
effect.Projection = projection; //投影变换矩阵
-
}
-
mesh.Draw();
-
}
-
}
-
- 在Game1类中增加成员变量,用于存储矩阵和汽车。
-
public Matrix projection;
-
public Matrix view;
-
Car car;
-
- Game1的Initialize方法中,添加以下语句
-
projection = Matrix.CreatePerspectiveFieldOfView(MathHelper.ToRadians(45),(float)graphics.GraphicsDevice.Viewport.Width/(float)graphics.GraphicsDevice.Viewport.Height, 1.0f, 1000.0f);
-
-
car.view = view;
-
car.projection = projection;
用于初始化矩阵和汽车。
-
- 在LoadContent方法中,加上以下语句:
-
car.CarModel = Content.Load<Model>("Content\\Models\\car");
用于载入汽车模型。
-
- 在Draw方法中加入以下语句:
-
car.CarDraw(gameTime);
调用汽车的绘制方法,使汽车在界面中显示。 -
此时运行项目,就可以在界面中看到一辆汽车了~