Размещаем сцену и делаем возможным перемещение в созданном пространстве.




Международный университет природы, общества и человека «Дубна»

Кафедра Информатики и Вычислительной техники

 

Типовой проект

на тему:

«создание трехмерной игры от первого лица»

 

 

Студент: Лущиков Владислав Игоревич

Группа студента: 3014

Преподаватель: Иванцова Ольга Владимировна

 

 

Рекомендуемая оценка __________

Преподаватель __________

(подпись)

Дата представления проекта «____» __________________ 2012 г.

Студент ___________________

(подпись)

 

 

Оглавление

Постановка задачи. 2

Введение. 3

Практическая часть. 4

Заключение. 8

Список Литературы.. 9

 


 

Постановка задачи

Цели: Получение новых навыков в использовании аффинных преобразований и умение работать с подключенными библиотеками. Улучшение навыка создания моделей и качественных виртуальных сцен.

 

Задача: Создать трехмерную игру от первого лица.

 

Исходные данные:

Уроки по 3d моделированию, Уроки C sharp, Готовые текстуры игровых объектов.

 

Априорные представления о модели:

· Пользователь должен иметь возможность передвигаться по сцене (плоскости) и совершать следующие действия:

- поворот камеры

- стрельба из предоставленного оружия

- прыжок и перемещение по игровому пространству

· Приложение должно предоставлять пользователю игровую статистику (время до окончания игры, кол-во пораженных целей)

· Управление осуществляется по средствам компьютерной мыши и клавиатуры.

· Программа не должна выдавать критические ошибки.

 

Результат: 3D приложение, соответствующее априорным представлениям о модели.

 

Критерии оценки результата: Приложение не должно некорректно завершать работу. Кол-во кадров должно соответствовать установленным нормам(60). У пользователя не должно остаться вопросов по игровому процессу.

 

Средствареализации: 3DSMax, C#, Photoshop cs.2.

 

 


 

Введение

В данной работе будет описан ход создания игры от первого лица. Первым будет описание создания моделей в виртуальной студии 3D’s max. Далее описание кода нашей программы, написанной на C# 2008 express с использованием библиотек DirectX. В конце последует демонстрация возможностей нашей программы.


 

Практическая часть.

 

В первую очередь мы определились с 3хмерными объектами, которые будут присутствовать у нас в программе.

В первую очередь это пространство, по которому мы будем передвигаться. Сделано оно было из примитива Plane, состоящего из 100 полигонов. По средствам модификатора Edit poly мы, на уровне редактирования точек, перемещаем некоторые из них на определенную высоту. В конце применяем модификатор Meshsmooth. Далее вытягиваем крайние ребра в стены и применяем для модели соответствующие текстуры. Для земли – текстура травы, для стен – просто коричневый цвет. Полученный объект экспортируем с помощью плагина Panda DirectX exploer. Таким же способом создаем второй объект – мишень. На скриншотах вы можете увидеть вышеуказанные детали.

 

Далее открываем студию и создаем новый проект. Подключаем к нему библиотеки DirectX и настраиваем исходные параметры (указываем видеокарту, настраиваем угол обзора, очищаем Z-буфер и прочее). Все эти действия показаны в видеоуроке(список уроков указан в списке литературы).

Теперь перейдем непосредственно к написанию кода.

 

Размещаем сцену и делаем возможным перемещение в созданном пространстве.

Сперва импортируем нашу сцену в проект (перетаскиваем папку с файлом и текстурами в солюшн). Далее читаем в файлы нашу сцену и примененные к ней материалы, и в таймере делаем ее отрисовку.


m = Mesh.FromFile("pole//polefg.x", MeshFlags.Managed, d3d,out mat);

tex = new Texture[mat.Length];

for (int i = 0; i < mat.Length; i++)

if (mat[i].TextureFilename!= null)

tex[i] = TextureLoader.FromFile(d3d, "pole\\" + mat[i].TextureFilename);

 

d3d.Transform.World = Matrix.Translation(pos1) * Matrix.LookAtLH(pos, pos + dir, up);

 

for (int i = 0; i < mat.Length; i++)

{

d3d.Material = mat[i].Material3D;

d3d.SetTexture(0, tex[i]);

m.DrawSubset(i);

}

 

Теперь мы сделаем перемещение с помощью кнопок «W,S,A,D» и движения мыши.

private void Form1_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e)

{

switch(e.KeyCode)

{

case Keys.W: { u = true; break; }

case Keys.S: { down = true; break; }

case Keys.A: { left = true; break; }

case Keys.D: { right = true; break; }

case Keys.Space: { if (jums) { jump = true; jumup = true; flytime = 0; } break; }

}

}

Для каждого нажатия осуществляется отдельная проверка условия. Ниже пример одной из них (остальные идентичны):

if (u)

{

 

pos = pos + speed * dir;

 

}

 

Теперь мы имеем возможность перемещаться в пространстве. Но у нас нет привязки к нашей территории. Об этом далее.



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2016-04-26 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: