Приставки
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
Команда Новости Помощь Ссылки
ПОМОЩЬ
Литература про игры
Предыдущая Следующая

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

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

model

content.Load<Model>(«Content\\Models\\Soccerball»);

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

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

private void DrawModel(Model m) {

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

world = Matrix.CreateTranslation(positionModel);

view = Matrix.CreateLookAt(new Vector3(0.0f, 0.0f, 150.0f),

Vector3.Zero, Vector3.Up);

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();

}

Рис. 17.6. Расположение модели в каталоге проекта

17.1.2. Метод DrawModel()

}

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

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

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

Последний блок кода метода DrawModel() задействует механизм языка программирования С# и оператор foreach для цикличного перебора данных массива, или, как в нашем случае, коллекции данных. Оператор foreach позаимствован из языка программирования Visual Basic и позволяет циклично извлекать каждый элемент коллекции данных по очереди, помещая извлеченный элемент в очередной объект массива, который вынесен в заголовок этого оператора.


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

Горяченькое

Друзья

Hosted by uCoz