Предыдущая Следующая
}
/// <summary>
/// Рисуем модель на экране /// <summary>
public void DrawModel(Matrix world, Matrix view, Matrix proj)
{
298 Загружаем в игру модель
Matrix[] transforms = new Matrix[model.Bones.Count]; model.CopyAbsoluteBoneTransformsTo(transforms);
foreach (ModelMesh mesh in model.Meshes) {
foreach (BasicEffect effect in mesh.Effects)
{
effect.EnableDefaultLighting();
effect.World = transforms[mesh.ParentBone.Index] * world; effect.View = view; effect.Projection = proj;
}
mesh.Draw();
} }
}
}
Исходный код нового класса чем-то напоминает технику работы с двухмерными изображениями. Код не сложен, подробно разбирать его не имеет смысла, единственное, что стоит заметить, - это то, что мы перенесли в класс ModelClass метод DrawModel() из класса Gamel, а необходимые матрицы передаем в метод в качестве параметров. Сами матрицы будут устанавливаться и по необходимости изменяться непосредственно в классе Gamel. Перейдем к программному коду этого класса.
17.3. Создаем объект класса LoadingModelClass
Теперь необходимо создать в исходном коде класса Gamel объект ball класса ModelClass и загрузить в него модель мячика. После этого нужно установить матрицы и вызвать метод ball.DrawModel(world, view, proj) в цикле прорисовки графики на экране.
В листинге 17.3 представлен полный исходный код обновленного класса Gamel. Весь проект LoadingModelClass находится на компакт-диске в папке Code\Chapter17\LoadingModelClass.
//=========================================================================
/// <summary>
/// Листинг 17.3
/// Исходный код к книге:
/// «Программирование игр для приставки Xbox 360 в XNA Game Studio Express» /// Автор книги: Горнаков С. Г. /// Глава 17
/// Проект: LoadingModelClass /// Класс: Gamel
/// Загружаем в игру модель через класс /// <summary>
//=========================================================================
#region Using Statements
Создаем объект класса LoadingModelClass 299
using System;
using System.Collections.Generic; using Microsoft.Xna.Framework; using Microsoft.Xna.Framework.Audio; using Microsoft.Xna.Framework.Content; using Microsoft.Xna.Framework.Graphics; using Microsoft.Xna.Framework.Input; using Microsoft.Xna.Framework.Storage; #endregion
namespace LoadingModelClass
{
public class Gamel : Microsoft.Xna.Framework.Game
{
private enum CurentGameState
{ }
CurentGameState gameState = CurentGameState.GameScreen;
GraphicsDeviceManager graphics; Предыдущая Следующая
|