Разработка мультимедийного интерактивного приложения с применением программного инструмента Unity

Сбор информации об Unity 3D. Подготовка программного обеспечения. Создание текстуры для создания локации. Подготовка модели для дальнейшего размещения. Создание местности с помощью редактора Unity 3D. Исследование на основании проделанной работы.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 07.08.2018
Размер файла 1,6 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

· W - передвижение вперед;

· A - передвижение влево;

· S - передвижение назад;

· D - передвижение вправо;

· Shift - ускорение передвижения;

· Spacebar - прыжок;

· Mouse x-axis - вращение камеры вдоль горизонтальной оси;

· Mouse y-axis - вращение камеры вдоль вертикальной оси.

Стоит разобрать принцип работы передвижения персонажа.

Объект, который позволяет игроку изучать мир состоит из несколькоих компонентов: Character Controller, C# script, Rigidbody, Audio Source. О каждом по порядку.

4.2.1 Character Controller

Компонент Character Controller в основном используется для управления от третьего или первого лица, где не требуется физика Rigidbody.

4.2.1.1 Свойства

· Slope Limit - ограничивает возможность коллайдер взбираться по склонам только по склонам равным или меньше чем указанное значение.

· Step Offset - персонаж переступит на поверхность, только если она ближе к земле, чем заданное значение.

· Skin width - 2 коллайдера могут пересечься друг с другом на глубину, равную значению Skin Width. Большее значение уменьшит степень тряски. Слишком низкое значение может вызвать застревание персонажа. Наилучшим вариантом является установление этого значения равным 10% от радиуса.

· Min Move Distance - если персонаж попробует сдвинуться ниже указанной величины, то он не сдвинется. Это может быть использовано, чтобы уменьшить тряску. В большинстве ситуаций это значение стоит оставить равным нулю(0).

· Center - сдвиг коллайдера в мировом пространстве без влияния на то, как вращается персонаж.

· Radius - значение радиуса коллайдера. По сути дела, это ширина коллайдера.

· Height - высота коллайдера Capsule Collider персонажа. Изменение её растянет коллайдер вдоль оси X в оба направления.

4.2.1.2 Детали

Традиционное управление от первого лица в стиле Doom не реалистично, с точки зрения физики. Персонаж бежит со скоростью 90 миль в час, останавливается мгновенно и поворачивается за считанные мгновения. Т.к. это нереалистично, использование Rigidbody и физики чтобы создать подобное управление непрактично и эффект будет не тот. Решением является специализированный Character Controller. Он просто создаёт коллайдер (Collider) в форме капсулы, который можно двигать в некотором направление при помощи скрипта. Controller позаботится о движении, но столкновения его сдерживают. Он будет скользить вдоль стен, подыматься по лестницам (если ступеньки ниже чем Step Offset) и ходить по наклонам учитывая Slope Limit. [10]

Controller не реагирует на силы сам по себе и не отталкивает Rigidbody объекты автоматически.

Если вы хотите толкать Rigidbody-тела или объекты, использующие Character Controller, вы можете применить силы к любому объекту, в которого он врезается, через скриптинг при помощи функции OnControllerColliderHit().

С другой стороны, если вы хотите, чтобы персонаж игрока подвергался влиянию физику, то возможно вам было бы лучше использовать Rigidbody вместо Character Controller.

4.2.1.3 Настройка персонажа до желаемого результата

Вы можете менять значения Height и Radius для соответствия коллайдера мешу персонажа. Для человекоподобных персонажей рекомендуется использовать высоту около 2-х метров. Вы также можете изменить центр (Center) капсулы в случае, если точка вращения (pivot) не соответствует точному центру персонажа. [10]

Значение Step Offset тоже важно при настройке, убедитесь, что это значение находится в диапазоне между 0.1 и 0.4 для 2-х метровых гуманоидов.

Slope Limit тоже должен быть не слишком маленьким. Зачастую использование значения в 90 градусов подходит лучше всего. Character Controller не сможет ползать по стене в виду формы капсулы.

4.2.1.4 Как не застрять

Skin Width одно из самых критических свойств для верной настройки Character Controller. Если вам персонаж застрял, то скорее всего ваше значение Skin Width слишком мало. Skin Width позволяет объектам слегка пересекать Controller, но уменьшает тряску и защищает от застревания. [10]

Достаточно неплохой практикой является сохранение значения Skin Width как минимум больше чем 0.01 и и больше чем 10% радиуса коллайдера (Radius).

4.2.2 C# script

Unity позволяет вам создавать свои компоненты, используя скрипты. Они позволяют активировать игровые события, изменять параметры компонентов, и отвечать на ввод пользователя каким вам угодно способом.

Unity изначально поддерживает три языка программирования:

· C# (произносится как Си-шарп), стандартный в отрасли язык подобный Java или C++;

· UnityScript, язык, разработанный специально для использования в Unity по образцу JavaScript;

В отличии от других ассетов, скрипты обычно создаются непосредственно в Unity. Вы можете создать скрипт используя меню Create в левом верхнем углу панели Project или выбрав Assets > Create > C# Script (или JavaScript/Boo скрипт) в главном меню.

Новый скрипт будет создан в папке, которую вы выбрали в панели Project. Имя нового скрипта будет выделено, предлагая вам ввести новое имя.

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

4.2.2.1 Структура файла скрипта

После двойного щелчка на скрипте в Unity, он будет открыт в текстовом редакторе. По умолчанию Unity будет использовать MonoDevelop, но вы можете выбрать любой редактор из панели External Tools в настройках Unity.

Содержимое файла будет выглядеть примерно так:

using UnityEngine;

using System.Collections;

public class MainPlayer : MonoBehaviour {

// Use this for initialization

void Start () {

}

// Update is called once per frame

void Update () {

}

}

Скрипт взаимодействует с внутренними механизмами Unity за счет создания класса, наследованного от встроенного класса, называемого MonoBehaviour. Вы можете думать о классе как о своего рода плане для создания нового типа компонента, который может быть прикреплен к игровому объекту. Каждый раз, когда вы присоединяете скриптовый компонент к игровому объекту, создается новый экземпляр объекта, определенный планом. Имя класса берется из имени, которое вы указали при создании файла. Имя класса и имя файла должны быть одинаковыми, для того, чтобы скриптовый компонент мог быть присоединен к игровому объекту.

Основные вещи, достойные внимания, это две функции, определенные внутри класса. Функция Update - это место для размещения кода, который будет обрабатывать обновление кадра для игрового объекта. Это может быть движение, срабатывание действий и ответная реакция на ввод пользователя, в основном всё, что должно быть обработано с течением времени во игровом процессе. Чтобы позволить функции Update выполнять свою работу, часто бывает полезно инициализировать переменные, считать свойства и осуществить связь с другими игровыми объектами до того, как будут совершены какие-либо действия. Функция Start будет вызвана Unity до начала игрового процесса (т.е. до первого вызова функции Update), и это идеальное место для выполнения инициализации.

4.2.3 Rigidbody

Твёрдые тела позволяют вашим игровым объектам взаимодействовать с помощью физики. Для реалистичного перемещения твёрдых тел, на последние воздействуют сила вращения и другие силы. Любой игровой объект должен содержать в себе твёрдое тело, чтобы быть подверженным гравитации, действовать согласно назначенным путём скриптинга силам, или взаимодействовать с другими объектами через физический движок NVIDIA PhysX. [11]

· Drag - какое воздушное сопротивление оказывается на объект пока он перемещается под воздействием этих сил. 0 означает отсутствие сопротивления, а бесконечность (infinity) тут же прекращает перемещение объекта.

· Angular Drag - какое воздушное сопротивление оказывается на объект пока он вращается под воздействием силы вращения. 0 означает отсутствие сопротивления. Учтите что вы не можете остановить вращение объекта путём установки его углового сопротивления (Angular Drag) в бесконечное (infinity) положение.

· Use Gravity - при включении на объект действует гравитация.

· Is Kinematic - при включении, объект не будет управляться физическим движком, и сможет управляться только при помощи своей трансформации. Полезно при перемещении платформ или если вам необходимо анимировать твёрдое тело, которое имеет назначенный HingeJoint.

· Interpolate - попробуйте одну из опций если вы замечаете тряску в перемещении своего твёрдого тела.

· None - не применено никакой интерполяции.

· Interpolate - сглаживание транформации основано на трансформации из предыдущего кадра.

· Extrapolate - сглаживание трансформации основано на приблизительной трансформации следующего кадра.

· Collision Detection - используется для предотвращения проникновения быстро перемещающихся объектов сквозь другие объекты без определения столкновений.

· Discrete - на всех остальных коллайдерах сцены используйте осторожное (Discreet) обнаружение столкновений. Другие коллайдеры будут использовать осторожное обнаружение столкновений при проверке на столкновения против них. Используется для нормальных столкновений (стандартное значение).

· Continuous - используйте осторожное обнаружение столкновений против динамических коллайдеров (с твёрдыми телами) и непрерывное обнаружение столкновений против статичных меш коллайдеров (без твёрдых тел). Твёрдые тела, установленные как непрерывные динамические (Continuous Dynamic) будут использовать непрерывное обнаружение столкновений при тестировании на столкновения против этого твёрдого тела. Другие твёрдые тела будут использовать осторожное обнаружение столкновений. Используется для объектов, с которыми нужно столкнуться при помощи динамического обнаружения столкновений. Всё это оказывает большое влияние на физическую производительность, поэтому оставьте данное значение установленным в Discrete, если не испытываете проблем со столкновением быстро движущихся объектов.

· Continuous Dynamic - используйте непрерывное обнаружение столкновений против объектов, настроенных на непрерывное и непрерывное динамическое столкновение. Также будет использоваться непрерывное обнаружение столкновений против статичных меш коллайдеров (без твёрдых тел). Для всех остальных коллайдеров будет использоваться осторожное обнаружение столкновений. Используется для быстро движущихся объектов.

· Constraints - ограничения движения твёрдого тела:-

· Freeze Position - выборочно останавливает перемещение твёрдого тела по осям X, Y и Z.

· - Freeze Rotation - выборочно останавливает вращение твёрдого тела по осям X, Y и Z.

4.2.4 Audio Source

Audio Source (источник звука) воспроизводит Audio Clip в сцене. Если Audio Clip является 3D клипом, источник проигрывается в заданном положении в пространстве и будет приглушаться в зависимости от расстояния. Аудио может быть распределено по колонкам (например, из стерео в 7.1) с помощью свойства Spread и трансформироваться между 3D и 2D с помощью свойства PanLevel. Можно контролировать зависимость этих эффектов от расстояния с помощью кривых затухания. Также если слушатель находится в одной или нескольких зонах реверберации, то к источнику применяются реверберации (только для Unity Pro). Для обогащения аудио ряда, к источнику можно применять отдельные аудио фильтры. См. справку по аудио эффектам для дополнительной информации. [12]

· Audio Clip - ссылка на аудио клип для проигрывания этим источником.

· Mute - усли включено, звук всё ещё будет проигрываться, но не будет слышен.

· Bypass Effects - для быстрого пропуска всех эффектов, применённых к источнику звука. Простой путь включения/отключения всех эффектов.

· Bypass Listener Effects - для быстрого включения/отключения всех эффектов, применённых к слушателю.

· Bypass Reverb Zones - для быстрого включения/отключения всех зон реверберации.

· Play On Awake - если включено, звук начнёт воспроизводиться сразу после загрузки сцены. Если отключено, вам потребуется запустить звук программно, с помощью метода Play().

· Loop - включите для бесконечного повтора Audio Clip'а после его окончания.

· Priority - определяет приоритет данного источника звука среди всех остальных источников в сцене (0 = наиболее важный, 256 = наименее важный, 128 по умолчанию). Используйте 0 для музыки, чтобы избежать её случайного переключения.

· Volume - насколько громок звук на расстоянии одной мировой единицы измерения (одного метра) от слушателя (Audio Listener'а).

· Pitch - степень изменения высоты тона при замедлении/ускорении Audio Clip'а. Величина 1 означает нормальную скорость воспроизведения.

· Spatial Blend - устанавливает степень влияния 3D движка на источник звука.

· Doppler Level - определяет количество эффекта доплера, применяемого к данному источнику (при значении 0 эффект применяться не будет).

· Spread - устанавливает угол распространения для 3d стерео или мультиканального звука в пространстве динамиков.

· Min Distance - громкость звука будет максимальной, насколько это возможно, на протяжении MinDistance. Вне MinDistance она будет постепенно снижаться. Увеличьте MinDistance звука, чтобы сделать его “громче” в трёхмерном мире; снизьте, чтобы сделать звук “тише” в трёхмерном мире.

· Max Distance - расстояние, на котором звук перестаёт затухать. За пределами этой точки его громкость останется на уровне, на котором она была бы на расстоянии MaxDistance единиц от слушателя и больше не будет затухать.

· Rolloff Mode - как быстро звук угасает. Чем выше значение, там ближе должен быть слушатель к звуку прежде, чем его можно будет услышать (определяется по графику).

· Logarithmic Rolloff - громкость звука высока, когда вы близко к источнику, но при удалении от объекта она довольно быстро падает.

· Linear Rolloff - чем вы дальше от источника звука, тем хуже вы его слышите.

· Custom Rolloff - звук источника аудио ведёт себя соответственно графику затуханий.

·

Заключение

В ходе выполнения дипломного проекта были исследованы вопросы касательно разработки игр. Были выполнены работы по проектированию и дизайну уровней. Работа выполнялась в одиночку, был сделан вывод о численности и компетенциях команды необходимой для разработки такого рода проекта в адекватный срок. Стоит отметить, что за неимением денег и как было сказано в начале дипломного проекта, работа является «ИНДИ-разработкой». Из этого следует, что подходы к определению качества членов команды размыты. Важными качествами здесь является желание работать и преодолевать сложности, а также минимальный опыт работы в сфере дизайна и разработки. Необходимая команда:

· Разработчик C# - разработка механик, связанных с физическими взаимодействиями моделей с миром и прочее;

· Разработчик JS - разработка механик, связанных с пользовательским интерфейсом, характеристики персонажа, главное меню и другое;

· Дизайнер уровней - создание уровней по которым игроки смогут перемещаться и исследовать мир;

· Дизайнер квестов - написание историй, заданий, диалогов, записок и в целом работа с текстом;

· Художник - главной задачей является рисование артов, поиск или создание текстур, создание и поиск 3D моделей;

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

Срок окончания исследования намечен на конец августа 2017 года. В сентябре 2017 года планируется начать подбор команды и поиск дополнительных средств для разработки. Размещено на Allbest.ru


Подобные документы

  • Игровой движок Unity, его использование для создания приложений, связанных с архитектурой, обучением, визуализацией данных и электронными книгами. Разработка системы освещения для работы с двухмерными объектами в виде расширения редактора Unity.

    дипломная работа [2,5 M], добавлен 11.02.2017

  • Игровые технологии; назначение, классификация и цель создания мобильных игр. Развлекательные, коммуникативные, терапевтические, диагностические функции игровой деятельности. Создание мобильного программного приложения "Angry Crane" в среде Java Android.

    курсовая работа [1,5 M], добавлен 09.12.2014

  • Обзор средств создания обучающих программ и формирование требований к электронному учебнику. Исследование этапов разработки интерактивного обучающего ресурса. Выбор инструментов реализации. Создание интерфейсной части приложения, проектирование тестов.

    дипломная работа [3,2 M], добавлен 20.05.2013

  • Особливості Unity у створенні віртуального робочого середовища. Моделювання у віртуальному середовищі навчальних проектів у вигляді лабораторних робіт з фізики, які спрямовані на покращення і спрощення навчального та практичного процесу навчання.

    курсовая работа [74,0 K], добавлен 30.08.2014

  • Платформа Unity 3D как средство разработки компьютерных деловых игр. Рассмотрение реализации взаимодействия между подсистемой проведения деловых игр и модулем визуализации. Формирование игровых уровней на примере компьютерной игры "Проезд перекрестка".

    дипломная работа [2,8 M], добавлен 22.08.2017

  • Разработка программного обеспечения для научных работ в области редактирования документов с математическими выражениями. Создание интерфейса приложения, подбор необходимых компонентов. Решение задач открытия и сохранения документов на диск компьютера.

    дипломная работа [858,0 K], добавлен 16.07.2013

  • Создание электронного учебника, написанного на языке гипертекстовой разметки HTML. Характеристика программного обеспечения ЭВМ, необходимого для создания и эксплуатации информационной системы. Алгоритм функционирования системы, отладка программы.

    курсовая работа [1,0 M], добавлен 22.12.2012

  • Исследование основных требований к пользовательскому интерфейсу. Краткая характеристика используемой операционной системы Windows 7 и языка программирования. Особенность создания удобного управления в игре. Главные требования к аппаратному обеспечению.

    курсовая работа [453,0 K], добавлен 02.06.2017

  • Разработка игрового проекта на игровом движке Unity 3D в среде программирования MS Visual Studio 2017. Блок-схема алгоритма работы приема сообщений с сервера на клиенте с упрощенным описанием выполняемых команд. Реализация пользовательского интерфейса.

    курсовая работа [1,5 M], добавлен 10.07.2017

  • Разработка адресных и технических требований к игре. Написание сценария. Общая концепция разработки приложения. Разработка схем алгоритмов приложения. Игровые технологии. Выбор среды и программированного языка. Описание пользовательского интерфейса.

    курсовая работа [1,6 M], добавлен 14.06.2014

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.