Liny_@NotePad

沉迷ACG中

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

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

本文使在界面上显示一辆汽车 = _ =

完成后的截图如下:

  1. 首先新建一个Car类,导入XNA框架包:
    1. using Microsoft.Xna.Framework.Graphics;
    2. using Microsoft.Xna.Framework.Content;
    3. using Microsoft.Xna.Framework;
  2. 在Car类中增加成员变量:
    1. Model model = null;                              // 读入car.x文件中的汽车保存到CarModel中
    2. public Matrix projection;                            // 车的投影矩阵
    3. public Matrix view;                              // 车的取景矩阵
    4. public float carLocation = 2.5f;                // 车中心位置的X坐标值
  3. 为model写一个setter方法:
    1. public Model CarModel
    2. {
    3.         set
    4.         {
    5.                 model = value;
    6.         }
    7. }
  4. 增加一个CarDraw方法(这命名似乎不怎么规范) 用于在世界中绘制汽车:
    1. public void CarDraw(GameTime gameTime)           
    2. {
    3.         foreach (ModelMesh mesh in model.Meshes)
    4.         {
    5.                 foreach (BasicEffect effect in mesh.Effects)
    6.                 {
    7.                         effect.EnableDefaultLighting();        //默认灯光和材质
    8.                         effect.World = Matrix.CreateScale(0.85f, 0.85f, 0.85f)    //汽车尺寸放大0.85倍
    9.                                 * Matrix.CreateTranslation(carLocation, 1.5f, -3.0f);   //汽车位置
    10.                         effect.View = view;                                                       //观察变换矩阵
    11.                         effect.Projection = projection;        //投影变换矩阵
    12.                 }
    13.                 mesh.Draw();
    14.         }
    15. }
  5. 在Game1类中增加成员变量,用于存储矩阵和汽车。
    1. public Matrix projection;
    2. public Matrix view;
    3. Car car;
  6. Game1的Initialize方法中,添加以下语句
    1.         projection = Matrix.CreatePerspectiveFieldOfView(MathHelper.ToRadians(45),(float)graphics.GraphicsDevice.Viewport.Width/(float)graphics.GraphicsDevice.Viewport.Height, 1.0f, 1000.0f);
    2.         view = Matrix.CreateLookAt(new Vector3(0.0f, 9.5f, -17.0f), new Vector3(0, 0, 0), new Vector3(0, 1, 0));
    3.  
    4.         car = new Car();
    5.         car.view = view;
    6.         car.projection = projection;

    用于初始化矩阵和汽车。
     
  7. 在LoadContent方法中,加上以下语句:
    1. car.CarModel = Content.Load<Model>("Content\\Models\\car");

    用于载入汽车模型。
     
  8. 在Draw方法中加入以下语句:
    1. car.CarDraw(gameTime);

    调用汽车的绘制方法,使汽车在界面中显示。

此时运行项目,就可以在界面中看到一辆汽车了~


登录 *


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