Liny_@NotePad

沉迷ACG中

使用XNA引擎做3D赛车小游戏..(2)

YOYO posted @ 2009年9月27日 22:30 in 【游戏开发】 with tags XNA , 2847 阅读

那么……这次在界面中显示公路。

截图如下:

  1. 首先是新建一个Road类,加上XNA框架:
    1. using Microsoft.Xna.Framework.Graphics;
    2. using Microsoft.Xna.Framework.Content;
    3. using Microsoft.Xna.Framework;
  2. 在Road类中增加属性:
    1. public Model RoadModel = null;    // 读入road.x文件中的公路保存到CarModel中
    2. public Matrix projection;                     // 公路的投影矩阵
    3. public Matrix view;                         // 公路的取景矩阵
  3. 增加一个方法,用于绘制道路:
    1. public void RoadDraw(GameTime gameTime, float x, float y, float z)
    2. {
    3.         foreach (ModelMesh mesh in RoadModel.Meshes)
    4.         {
    5.                 foreach (BasicEffect effect in mesh.Effects)
    6.                 {
    7.                         effect.EnableDefaultLighting();    // 默认灯光和材质
    8.                         effect.World = Matrix.CreateTranslation(x, y, z);
    9.                         effect.View = view;
    10.                         effect.Projection = projection;
    11.                 }
    12.  
    13.                 mesh.Draw();
    14.         }
    15. }
  4. 在Game1类中增加Road对象,由于一条路由两段组成(以实现连接效果),因此需要两个float变量来记录偏移:
    1. Road road;                                   
    2. float RoadDepth0 = 0.0f;                        // 公路式由两段组成,使用同一个.x文件
    3. float RoadDepth1 = 100.0f;                  // RoadDepth1是第2段公路在Z方向的位移
  5. 在Initialize方法中初始化道路和投影、取景矩阵:
    1. road = new Road();
    2. road.view = view;
    3. road.projection = projection;
  6. 在LoadContent方法中加载道路x文件:
    1. road.RoadModel = Content.Load<Model>("Content\\Models\\road");
  7. 在Draw方法中加入以下语句,实现绘制道路:
    1. road.RoadDraw(gameTime, 0, 0, RoadDepth0);
    2. road.RoadDraw(gameTime, 0, 0, RoadDepth1);

 

便完成了显示道路的过程 = = 下一节将简单地实现汽车在道路上行进的效果


登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter