使用XNA引擎做3D赛车小游戏..(2)
那么……这次在界面中显示公路。
- 首先是新建一个Road类,加上XNA框架:
-
using Microsoft.Xna.Framework.Graphics;
-
using Microsoft.Xna.Framework.Content;
-
using Microsoft.Xna.Framework;
-
- 在Road类中增加属性:
-
public Model RoadModel = null; // 读入road.x文件中的公路保存到CarModel中
-
public Matrix projection; // 公路的投影矩阵
-
public Matrix view; // 公路的取景矩阵
-
- 增加一个方法,用于绘制道路:
-
public void RoadDraw(GameTime gameTime, float x, float y, float z)
-
{
-
foreach (ModelMesh mesh in RoadModel.Meshes)
-
{
-
foreach (BasicEffect effect in mesh.Effects)
-
{
-
effect.EnableDefaultLighting(); // 默认灯光和材质
-
effect.World = Matrix.CreateTranslation(x, y, z);
-
effect.View = view;
-
effect.Projection = projection;
-
}
-
-
mesh.Draw();
-
}
-
}
-
- 在Game1类中增加Road对象,由于一条路由两段组成(以实现连接效果),因此需要两个float变量来记录偏移:
-
Road road;
-
float RoadDepth0 = 0.0f; // 公路式由两段组成,使用同一个.x文件
-
float RoadDepth1 = 100.0f; // RoadDepth1是第2段公路在Z方向的位移
-
- 在Initialize方法中初始化道路和投影、取景矩阵:
-
road.view = view;
-
road.projection = projection;
- 在LoadContent方法中加载道路x文件:
-
road.RoadModel = Content.Load<Model>("Content\\Models\\road");
-
- 在Draw方法中加入以下语句,实现绘制道路:
-
road.RoadDraw(gameTime, 0, 0, RoadDepth0);
-
road.RoadDraw(gameTime, 0, 0, RoadDepth1);
-
便完成了显示道路的过程 = = 下一节将简单地实现汽车在道路上行进的效果