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

/// <summary>

/// Листинг 18.2

/// Исходный код к книге:

/// "Программирование компьютерных игр под Windows в XNA Game Studio Express" /// Автор книги: Горнаков С. Г. /// Глава 18

/// Проект: LoadingModelClass /// Класс: ModelClass

/// Загружаем в игру модель через класс /// <summary>

//=========================================================================

#region Using Statements 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

{

class ModelClass

{

public Model model; public Vector3 position;

public ModelClass()

{

position = new Vector3(0, 0, 0);

}

/// <summary>

/// Загрузка модели в игру /// <summary>

public void Load(ContentManager content, String stringModel) {

model = content.Load<Model>(stringModel);

}

/// <summary>

/// Рисуем модель на экране /// <summary>

public void DrawModel(Matrix world, Matrix view, Matrix proj)

{

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 . Перейдем к программному коду этого класса.

18.3. Создаем объект класса LoadingModelClass

Теперь необходимо создать в исходном коде класса Gamel , объект ball класса ModelClass и загрузить в него модель мячика. После этого нужно установить матрицы и вызвать метод ball.DrawModel(world, view, proj) в цикле прорисовки графики на экране. В листинге 18.3 представлен полный исходный код обновленного класса Gamel. Весь проект LoadingModelClass находится на компакт-диске в папке Code\Chapter18\LoadingModelClass.


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

Горяченькое

Друзья

Hosted by uCoz