Приставки
Nintendo (Dendy)
Nintendo 64
Sega Genesis
Sega CD / 32x
Master System
Super Nintendo
Turbo Grafx 16
Sega Saturn
Sony PlayStation
GameBoy Advance
GameBoy / Color
Game Gear
Atari
Другие

Утилиты
Системные утилиты
GoodXXXX
Sega CD / 32x
Nintendo 64
Переводы, хакинг
Музыка

Мир приставочных игр

Версия 2.00a

Leonis © 2002-2009
Команда Новости Помощь Ссылки
ПОМОЩЬ
Литература про игры
Предыдущая Следующая

Значение этой переменной можно также определять и числовыми значениями (например, 1024/768), но тогда вы «привяжете» себя к конкретному размеру дисплея. В предыдущей главе мы создали универсальный механизм по подбору текущего разрешения дисплея, поэтому значение переменной aspectRatio следует также определять на автомате.

Переходим к методу LoadGraphicsContent(). Строка кода по загрузке модели из рабочего каталога программы выглядит следующим образом:

model = content.Load<Model>("Content\\Models\\Soccerball");

Рис. 18.5. Объектная система координат

Как видите, такая запись практически идентична записи по загрузке спрайтового изображения, но вместо ключевого слова <Texture2D> используется слово <Model>. Такая команда дается для Content Pipeline на выполнение загрузки в программу уже трехмерной модели, а не текстуры. Модель мячика находится в каталоге рабочего проекта в папке Content\Models (рис. 18.6). Здесь схема поиска модели в каталоге проекта у загрузчика Content Pipeline стандартна.

18.1.2. Метод DrawModel()

Для рисования или представления модели на экране монитора в исходном коде класса Gamel создан метод DrawModel().

private void DrawModel(Model m)

{

Matrix[] transforms = new Matrix[m.Bones.Count]; m.CopyAbsoluteBoneTransformsTo(transforms);

world = Matrix.CreateTranslation(positionModel);

284 Загружаем в игру модель

Рисуем модель на экране монитора 285

view = Matrix.CreateLookAt(new Vector3(0.0f, ü.üf, 150.0f), Vector3.Zero, Vector3.üp);

proj = Matrix.CreatePerspectiveFieldOfView(FOV, aspectRatio, nearClip, farClip);

foreach (ModelMesh mesh in m.Meshes) {

foreach (BasicEffect effect in mesh.Effects)

{

effect.EnableDefaultLighting();

effect.World = transforms[mesh.ParentBone.Index] * world; effect.View = view; effect.Projection = proj;

}

mesh.Draw();

}

}

Этот метод на первый взгляд кажется сложным, но на самом деле это отлаженный механизм построения модели в пространстве и вывода ее на экран. В этот метод в качестве параметра передается модель, и в первых двух строках происходят считывание и преобразование всех вершин модели в один массив данных.

Затем происходит установка всех трех матриц. Мировая матрица получает позицию модели в пространстве. В матрице вида происходит установка камеры методом CreateLookAt(), где первый параметр как раз и определяет позицию камеры. В нашем случае мы удаляем камеру для модели на 150 пикселей в сторону от монитора в направлении ваших глаз. Два оставшихся параметра метода CreateLookAt() - типично используемые величины. По окончании этой главы самостоятельно попробуйте изменять все значения матрицы вида, чтобы уяснить суть этих преобразований. Матрица проекции для своих расчетов использует четыре переменные, назначение которых вы уже знаете.


Предыдущая Следующая

Горяченькое

Друзья

Hosted by uCoz