Полный перечень программ для создания игр (3D PC)

Лучшие 360 видео и аттракционы для VR реальности на телефон

VirtualRift 2016-07-09 VR видео 2.9 215119

Все VR фильмы для очков виртуальной реальности записаны в качестве не ниже 4K, полном 360 окружении и большинство в 3D режиме. Посмотреть их можно абсолютно бесплатно.

С ростом популярности VR индустрии, очень многие начали выпускать контент для очков виртуальной реальности. С одной стороны, это очень хорошо, но с другой — появилась масса не качественных и не интересных 360 аттракционов.

Что бы помочь разобраться во всём разнообразии и найти действительно хорошие VR видео, аттракционы и VR фильмы, которые доставят вам кучу позитивных эмоций — мы провели кропотливую работу, выбрали самые впечатляющие и поделили их по категориям для вашего удобства!

Посмотреть эти видео можно как в очках виртуальной реальности для ПК или телефона, так и в браузере — управляя обзором при помощи мыши. Но лучше всего в VR очках и с максимальным качеством.

Может быть интересно:

  • Как смотреть VR видео для взрослых в шлеме виртуальной реальности
  • Как смотреть 360 видео на YouTube с HTC Vive или Oculus Rift

Введение

Для этого урока вам понадобится некоторые изображения, звуковые эффекты и музыка. Загрузите материалы, используя эту ссылку. Вам также потребуется Unity 2020.3 или более поздняя версия, установленная на вашем компьютере.

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

Создание и настройка проекта

Откройте Unity и выберите «New project» в окне «Project» или нажмите кнопку «New» в правом верхнем углу, если ранее вы уже создавали проекты в Unity.

Примечание: если вы уже создали несколько проектов Unity 2D, не стесняйтесь использовать стартовый проект RocketMouse Part 1 в материалах. Кроме того, вы можете использовать множество различных платформ при создании игры в Unity, однако в рамках этого урока вы будете работать с настройками, предназначенными для iPhone Retina.

Введите RocketMouse в поле Project name и укажите дирректорию, в которой вы хотите сохранить проект. Кнопка с многоточием в конце поля позволит вам перейти в каталог по вашему выбору. Выбрав место, нажмите «Select folder», чтобы задать местоположение. Выберите опцию 2D и нажмите «Create Project».

Если вы не загрузили стартовый проект, создайте папку с именем RW в окне «Project» с помощью AssetsCreateFolder или используйте раскрывающийся список «Create» в верхнем левом углу окна «Project». В этом месте будут храниться все последующие папки и файлы, созданные в этом каталоге.

Создайте еще одну новую папку с именем Scenes в каталоге RW в окне «Project». Затем откройте диалоговое окно «Save Scene», выбрав FileSave Scene или воспользовавшись сочетанием клавиш S (Ctrl + S в Windows). Перейдите в папку Scenes, которую вы только что создали, назовите сцену RocketMouse.unity и нажмите «Save».

Мой первый опыт в разработке 2D-игры (5 советов)

Хочу поделиться небольшим опытом, который я приобрел при создании своей первой игры для Andriod. Скажу сразу, на момент начала разработки мой опыт программирования был средним (1С и немного C#), а опыт в гейм-деве — нулевым. В качестве инструмента разработки был выбран Unity3D 4.6, привлекла мультиплатформенность и наличие большого количества видео-уроков. Т.к. я вырос на играх 80-х, то было решено попробовать сделать ремейк культовой игры Prehistorik 2, в итоге получилась 2D-аркада под названием Prehistoric Story. Начиналось всё это как хобби, а потом переросло в большой проект, благодаря которому много людей получили ценный опыт и практические навыки. Далее будет 5 ценных советов, основанных на моем личном опыте. Совет №1: Тщательно подходите к выбору инструмента для разработки

Unity хорош для новичков — всё просто, удобно и делается в пару кликов, но APK-файлы получаются огромными! Плюс ко всему бесплатная версия имеет много ограничений, например, отсутствие динамической загрузки сцен. В этом случае мне пришлось ограничиться показом статичной картинки.

Совет №2: Художник должен быть один, с хорошей оплатой и четкими сроками

Учитывая, что я рисовать совсем не умею, мне пришлось обратиться за помощью к художникам-энтузиастам на одном известном арт-форуме. Денег на оплату работы художников у меня не было, а материала для отрисовки было много для одного человека, поэтому рисовать взялись 9 человек. Кто-то нарисовал пару зверушек, а кто-то — несколько локаций, а мне, в свою очередь, нужно было держать всех в рамках одного дизайна. Вся эта работа в отсутствии бюджета заняла около 6 месяцев.

Совет №3: Никогда не урезайте возможности Вашей игры на этапе проектирования

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

Совет №4: Используйте спрайтовую анимацию и большие текстуры только в самых крайних случаях

По началу анимация спрайтами казалась мне отличным решением, но ровно до этапа оптимизации. Для некоторых зверушек использовались серии спрайтов по 4096px, что очень сильно сказывалось на размере игры. Если бы я вовремя узнал про анимацию частей тела, то размер игры мог бы получиться вдвое меньше. Также на размере сильно сказалось разнообразие текстур поверхностей, которых было очень много, разных размеров и видов.

Совет №5: Изучите все тонкости публикации и подготовьте материалы для рекламы игры заранее

В день публикации я выяснил, что размещать приложения в Google Play размером более 50 Мб нельзя. Для этого необходимо скомпилировать приложение с разделением на 2 файла: apk и файлом кэша obb. Плюс ко всему необходимо было подписать приложение ключом, который предоставляется в Google Play Developer Console. Далее необходимо было подготовить скриншоты и описание игры, что, поверьте, занимает значительное время.

Вывод

Итого на разработку игры было потрачено 0 рублей, 9 месяцев неспешной разработки и немного нервов при публикации, но зато я получил ценный опыт в разработке игр и познакомился с интересными и творческими людьми. Очень надеюсь, что мое новое хобби когда-нибудь перерастет в прибыльное дело.

Настройка внешнего вида игры

Переключитесь в режим «Game» и установите фиксированное разрешение размером 1136 × 640. Если у вас нет этого параметра в списке, создайте его и назовите iPhone Landscape.

Выберите Main Camera в меню Hierarchy и в окне Inspector, внутри компонента «Camera», установите значение «Size» = 3.2.

Сохраните сцену.

Импорт игровых активов

Чтобы добавить новые ресурсы, откройте папку RocketMouse_Resources, выберите папки Sprites и Audio и перетащите их в папку Assets в окне Project.

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

Разметка и панели Unity

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

Пустой проект

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

Чтобы держать все под рукой, советуем создать папки во вкладке Project (Проект). Эти папки будут созданы в папке Assets вашего проекта.

Внимание: папка Assets – это место, где хранится все, что вы добавляете во вкладке
Project. Она может быть невидимой в Unity, в зависимости от выбранной разметки вкладки (одна или две колонки), но вы сможете увидеть ее, открыв приложение для экспорта файлов.

Папки в Unity

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

Добавление игрока на игровую сцену

Многие анимированные игровые спрайты поставляются в виде спрайт-листа, и ваша мышка не является исключением.

Нарезка кадров спрайта мыши

Кадры для анимации полета, бега и гибели содержатся в листе mouse_sprite_sheet и ваш первый шаг — правильно его нарезать.

Откройте папку Sprites в окне Project и найдите mouse_sprite_sheet. Выберите его и установите для Sprite Mode значение «Multiple» в меню Inspector, а затем нажмите «Apply».

Теперь вам нужно нажать на кнопку Sprite Editor, чтобы открыть редактор спрайтов.

В редакторе спрайтов нажмите кнопку «Slice» в левом верхнем углу, чтобы открыть параметры нарезки кадров.

  1. Установите в поле Type значение Grid By Cell Size.
  2. Установите размер пикселя 162х156.
  3. Нажмите кнопку «Slice».
  4. На экране должна появиться сетка. Не забудьте нажать кнопку «Apply», чтобы сохранить изменения.

Также в редакторе спрайтов, выберите верхнее левое изображение, чтобы отобразить его детали. Щелкните в поле «Name» и присвойте спрайту более подходящее имя: mouse_run_0.

Переименуйте оставшиеся спрайты сверху вниз слева направо следующим образом:

  • mouse_run_1
  • mouse_run_2
  • mouse_run_3
  • mouse_fly
  • mouse_fall
  • mouse_die_0
  • mouse_die_1

Нажмите Apply еще раз, чтобы сохранить изменения.

Закройте редактор спрайтов и разверните mouse_sprite_sheet в окне Project. Посмотрите, теперь он разделен на восемь различных спрайтов.

Настало время добавить что-то еще в область игровой сцены. Выберите спрайт с именем mouse_fly и перетащите его в рабочую область сцены.

Сделав это, вы создадите объект в Hierarchy с именем mouse_fly.

Выберите mouse_fly в Hierarchy и внесите следующие изменения в окне Inspector:

  1. Измените объекта на mouse, так как это название отображает описание персонажа.
  2. Установите значение координат для Position = (0, 0, 0). Вы переместите мышь в конечное положение чуть позже, но сейчас лучше расположить ее прямо в центре экрана, чтобы лучше видеть.
  3. Добавьте 2D-компонент Circle Collider, нажав кнопку «Add Component» окне Inspector. В раскрывающемся меню выберите Physics 2D, а затем выберите Circle Collider 2D.
  4. Установите для компонента Radius значение 0,5.

  1. Добавьте компонент Rigidbody 2D, нажав кнопку Add Component и выбрав Physics 2D Rigidbody 2D.
  2. Разверните раздел constraints в компоненте Rigidbody 2D и установите флажок Freeze Rotation Z.

Посмотрите, как все должно выглядеть:

Зеленый кружок в окне «Scene» обозначает коллайдер – обратите внимание на то, что его размер изменился, когда вы изменили свойство Radius компонента Circle Collider 2D.

Коллайдеры определяют форму, которая используется физическим движком для определения столкновений с другими объектами. Вы могли бы создать более точный пиксельный коллайдер, используя 2D компонент Polygon Collider, как показано на скриншоте ниже:

Однако использование таких коллайдеров делает процесс обнаружения столкновений более сложным, что, в свою очередь, приводит к снижению производительности. Лучше придерживаться правила — всегда использовать простые коллайдеры, если это возможно. Как вы увидите далее, круговой коллайдер работает достаточно хорошо для этой игры. Единственной корректировкой был его радиус, чтобы он мог соответствовать исходному изображению мыши.

В то время как коллайдеры определяют форму объекта, Rigidbody — это то, что ставит ваш игровой объект под контроль физического движка. Без компонента Rigidbody гравитация не может влиять на GameObject. Таким образом, вы не можете применить такие вещи, как сила и крутящий момент к GameObject.

Фактически, столкновения между двумя объектами GameObject будет незаметным, если ни у одного из них не будет компонента Rigidbody. Если вы хотите, чтобы мышь подверглась воздействию силы тяжести и сталкивалась с другими объектами, вам нужно использовать свойство Freeze Rotation компонента Rigidbody 2D.

Запустите сцену и наблюдайте, как мышь падает вниз под действием силы тяжести:

Фактически, когда вы добавили компонент Rigidbody 2D, ему была присвоена гравитационная шкала по умолчанию, равная 1.

Ассеты проекта

В вашей панели Project, вы можете найти различные типы ассетов:

  • Префабы

    Многоразовые игровые объекты (например: пули, враги, бонусы).

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

  • Сцены

    Сцена содержит игровой уровень или меню.

    В отличие от других объектов, создаваемых в панели «Проект», сцены создаются в меню «Файл». Если вы хотите создать сцену, нажмите на кнопку «Новая сцена» в подменю и не забудьте потом сохранить ее в папку Scenes.

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

  • Звуки

    Тут все предельно просто. Увидите, если захотите раскидать музыку по разным папкам.

  • Scripts

    Весь код находится здесь. Мы используем эту папку в качестве эквивалента корневой папке в C# проекте.

  • Textures

    Спрайты и изображения вашей игры. В 2D проекте вы можете переименовать эту папку в «Sprites».

    Это неважно для 2D проекта, но, оставив название Textures (Текстуры), вы дадите возможность Unity автоматизировать некоторые задачи. Если вы хотите узнать подробную информацию по этой теме, вы можете прочитать об этом здесь.

Заметка о папке Resources: если вы уже работали с Unity, вы знает, что Resources – полезная и уникальная папка. Она позволяет загрузить в скрипт объект или файл (с помощью статичного класса Resources). Она понадобится нам в самом конце (в главе, посвященной меню). Проще говоря, пока мы не будем ее добавлять.

Наша первая игровая сцена

Панель Hierarchy (Иерархия) содержит все объекты, которые доступны в сцене. Это то, чем вы манипулируете, когда начинаете игру с помощью кнопки «Play».

Каждый объект сцены является игровым объектом для Unity. Вы можете создать объект в главной сцене, или в другом объекте игры. Также вы можете в любое время переместить объект чтобы изменить его родителя.

Логические объекты

Как вы можете видеть здесь, у нас здесь 3 потомка для объекта Level.

Пустые объекты

В Unity

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

Убедитесь, что все они имеют координаты (0, 0, 0) и тогда вы сможете легко их найти! Пустые объекты никак не используют свои координаты, но они влияют на относительные координаты их потомков. Мы не будем говорить об этой теме в этом уроке, давайте просто обнулим координаты ныших пустых объектов.

Заполнение сцены

По умолчанию, новая сцена создается с объектом Main Camera (Главная камера). Перетащите ее на сцену.

Для начала создайте эти пустые объекты:

Scripts Мы добавим наши скрипты сюда. Мы используем этот объект, чтобы прикрепить сценарии, которые не связаны с объектом – например, скрипт гейм-менеджера. Render Здесь будет наша камера и источники света. Level

В Level создайте 3 пустых объекта:

  • 0 — Background
  • 1 — Middleground
  • 2 — Foreground

Сохраните сцену в папке Scenes. Назовите ее как угодно, например Stage1. Вот, что у нас получилось:

Совет: по умолчанию игровой объект привязан к положению родителя. Это приводит к интересному побочному эффекту при использовании объекта камеры: если камера является дочерним объектом, она автоматически будет отслеживать положение родителя. Если же она является корневым объектом сцены или находится внутри пустого игрового объекта, она всегда показывает один и тот же вид. Однако если вы поместите камеру в движущийся игровой объект, она будет следовать за его передвижениями в пределах сцены. В данном случае нам нужна фиксированная камера, поэтому мы помещаем ее в пустой объект Render. Но запомните это свойство объекта камеры, оно может вам пригодиться. Мы подробно остановимся на этой теме в главе «Паралаксный скроллинг».

Мы только что создали базовую структуру нашей игры. На следующем этапе мы начнем делать забавные вещи: добавим на сцену фон и кое-что еще!

Добавляем фон в сцену

Наш первый фон будет статическим. Воспользуемся следующим изображением:

TGPA фон

Импортируйте изображение в папку Textures (Текстуры). Просто скопируйте файл в нее, или перетащите его из проводника. Не беспокойтесь сейчас о настройках импорта.

Создайте в Unity новый игровой объект Sprite на сцене.

Новый спрайт для игры в Unity

Что такое спрайт?

По сути, спрайт – это 2D-изображение, используемое в видео-игре. В данном случае это объект Unity для создания 2D-игр.

Добавляем текстуру спрайта

Unity может автоматически установить фон для вашего спрайта. Если ничего такого не произошло, или если вы хотите изменить текстуру, перейдите на вкладку инспектора и выберите background: (фон)

Выбор спрайта в Unity

Вы должны нажать на маленький круглый значок справа от поля ввода, чтобы появилось Select Sprite (Выбрать спрайт) в Инспекторе

Мой спрайт не появляется в диалоговом окне! Убедитесь, что вы находитесь в вкдадке Assets диалогового окна «Select Sprite» (Выбрать спрайт). Если вы видите диалоговое окно пустым, — не пугайтечсь. Дело в том, что для некоторых установок Unity, даже со свежим новым 2D проектом изображения импортируются как «Текстура», а не «Спрайт». Чтобы это исправить, необходимо выбрать изображение на панели «Проект», и в «Инспекторе», изменить свойство «Текстура Type» имущество «Sprite»:

Итак, мы создали простой спрайт отображающий облака на небе. Давайте внесем изменения в сцену. В панели Hierarchy (Иерархия) выберите New Sprite. Переименуйте его в Background1 или что-то такое, что легко запомнить. Переименуйте его в Background1 или что-то такое, что легко запомнить. Затем переместите объект в нужное место: Level -> 0 — Background. Измените координаты на (0, 0, 0).

Фон установлен

Создайте копию фона и поместите его в (20, 0, 0). Это должно отлично подойти к первой части.

Tip: Вы можете создать копию объекта с помощью клавиш cmd + D в OS X или ctrl + D Windows.

Фон 2

Слои со спрайтами

Следующее утверждение очевидно, но обладает некими неудобствами: мы отображения 2D мир. Это означает, что все изображения на одной и той же глубине, то есть 0. И вы графический движок не знает, что отображать в первую очередь. Слои спрайтов позволяют нам обозначить, что находится спереди, а что сзади.

В Unity мы можем изменить «Z» наших элементов, что позволит нам работать со слоями. Это то, что мы делали в этом руководстве перед обновлением до Unity 5, но нам понравилась идея идея использовать слои со спрайтами. У вашего компонента Sprite Renderer есть поле с именем Sorting Layer с дефолтным значением. Если щелкнуть на нем, то вы увидите:

Давайте добавим несколько слоев под наши нужды (используйте кнопку +):

Добавить сортировку слоя в Unity

Добавьте фоновый слой к вашему спрайту фона:

Установить сортировку слоя

Настройка Order in Layer — это способ ограничить подслои. Спрайты с меньшим номером оказываются перед спрайтами с большими числами.

Слой Default нельзя удалить, так как это слой, используемый 3D-элементами. Вы можете иметь 3D-объекты в 2D игре, в частности, частицы рассматриваются как 3D-объекты Unity, так что они будут рендериться на этом слое.

Добавление элементов фона

Также известных как props. Эти элементы никак не влияют на геймплей, но позволяют усовершенствовать графику игры. Вот некоторые простые спрайты для летающих платформ:

Спрайты для платформ

Как видите, мы поместили две платформы в один файл. Это хороший способ научиться обрезать спрайты с помощью новых инструментов Unity.

Получение двух спрайтов из одного изображения

Выполняйте следующие действия:

  1. Импортируйте изображения в папку «Текстуры»
  2. Выберите спрайт Platform и перейдите к панели Инспектор
  3. Измените «Sprite Mode» на «Multiple»
  4. Нажмите на кнопку Sprite Editor (Редактор спрайта)

В новом окне (Sprite Editor) вы можете рисовать прямоугольники вокруг каждой платформы, чтобы разрезать текстуру на более мелкие части:

Редактор спрайтов

Кнопка Slice в левом верхнем углу позволит вам быстро и автоматически проделать эту утомительную работу:

Автоматическая нарезка

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

В этом уроке проделаем эту операцию вручную. Назовите платформы platform1 и platform2. Теперь, под файлом изображения, вы должны увидеть два спрайта отдельно:

Результат редактора спрайтов

Добавим их в сцену. Для этого мы будем выполнять те же действия что и для фона: создадим новый спрайт и выберим platform1. Потом повторим эти действия для platform2. Поместите их в объект 1 — Middleground. Убедитесь, что их позиция по оси Z равна нулю.

Две новые платформы

Создание скрипта для управления полетом

Вам нужно добавить скрипт, который активирует реактивный ранец и даст возможность вашей мышке по настоящему летать.

Для этого вам нужно:

  1. В меню Project browser создать новую папку в каталоге RW с именем Scripts, таким же образом, как ранее вы создавали папку Scenes. Убедитесь, что у вас выбрана эта папка, поскольку Unity добавит новый скрипт только в текущую выбранную папку.

  1. Выберите CreateC# Script в верхнем меню и назовите скрипт MouseController.
  2. Перетащите скрипт MouseController на мышь в меню Hierarchy. Это добавит компонент Script и установит его свойство для скрипта MouseController.

Примечание: обязательно убедитесь, что вы правильно называете скрипт при первом его создании. В противном случае вы получите следующую ошибку при попытке добавить этот скрипт в GameObject:

Невозможно добавить поведение скрипта MouseController. Имя файла скрипта не совпадает с именем класса, определенного в скрипте!

Теперь пришло время написать код. Откройте скрипт MouseController, дважды щелкнув его в окне «Project» или в меню «Inspector». Этаким образом вы откроете MouseController.cs в любом удобном вам редакторе.

Добавьте следующую переменную jetpackForce:

public float jetpackForce = 75.0f;

Примечание: рекомендуется сделать переменную общедоступной и установить значение по умолчанию. Таким образом, вы можете детально настроить силу реактивного ранца меню Inspector и у вас будет значение по умолчанию, если вы забудете или не захотите его настраивать.

Чуть ниже jetpackForce добавьте следующую переменную:

private Rigidbody2D playerRigidbody;

Затем добавьте следующий код в автоматически сгенерированный метод Start:

playerRigidbody = GetComponent();

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

Затем добавьте еще один метод:

void FixedUpdate() { bool jetpackActive = Input.GetButton(«Fire1»); if (jetpackActive) { playerRigidbody.AddForce(new Vector2(0, jetpackForce)); } }

FixedUpdate () вызывается Unity через фиксированный интервал времени.

Примечание: Разница между методами Update и FixedUpdate в том, что FixedUpdate вызывается через равные промежутки времени, в то время как Update вызывается для каждого кадра. Так как, частота смены кадров может меняться, время между вызовами Update — методов может также меняться, однако физические движки плохо работают с переменным шагом времени. Вот почему метод FixedUpdate существует и должен быть использован, чтобы написать код, связанный с моделированием физики (например, применение силы, задание скорости и так далее).

В FixedUpdate вы проверяете, нажата ли кнопка Fire1. Эта кнопка определяется по умолчанию в Unity как левая кнопкой мыши, левой клавиша Ctrl на клавиатуре, или просто касанием экрана для сенсорного устройства (в данном случае). Поэтому, если в данный момент нажата Fire1, код применит к мыши подъемную силу. Свойство rigidbody2D просто возвращает компонент Rigidbody 2D, прикрепленный к текущему объекту игры, или NULL если компонент отсутствует.

Метод AddForce просто применяет силу к rigidbody. Он принимает Vector2, который определяет направление и величину приложенной силы.

Запустите сцену и удерживайте левую кнопку мыши, чтобы включить ракетный ранец и посмотреть, как летает мышь.

Воксели

В воксельных (от слов «volume» и «pixel» — объемный пиксель) системах объекты строятся из кубиков. В то время как изображение, составленное из обыкновенных пикселей, двухмерно (фактически, это просто цветные точки на виртуальной бумаге), картинка из вокселей имеет три измерения. Она состоит из мельчайших кубиков, которые могут быть прозрачными (если имитируют воздух) или закрашенными (если симулируют материю).

Настоящие воксельные движки требуют огромных вычислительных мощностей и используются в основном в медицине и сложных научных визуализациях. Но в девяностых годах упрощенная воксельная технология внезапно — с выходом симулятора Comanche: Maximum Overkill

— обрела популярность в играх.

Регулировка силы тяжести

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

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

Для глобального изменения силы тяжести выберите EditProject SettingsPhysics 2D. Это откроет настройки Physics 2D проекта в меню Inspector. Найдите поле Gravity и установите значение Y равным —15.

При повторном запуске сцены вам должно быть намного проще удерживать мышь на экране.

Не волнуйтесь, если вы по-прежнему испытываете трудности по поддержанию мыши в пределах экрана игры. Попробуйте сделать вашу вкладку Game немного больше, настроить jetpackForce, или гравитацию. Значения, рекомендуемые здесь, будут правильно работать, когда вы запустите игру на iPhone. Пол и потолок помогут лучше держать мышь в поле зрения, поэтому вам нужно их добавить в следующей главе.

Добавление пола и потолка

Добавление пола и потолка — относительно простой процесс и все, что вам нужно, это указать объект, с которым мышь сталкивается в верхней и нижней части сцены. Однако пол и потолок могут быть представлены пустыми объектами GameObject, поскольку они никогда не перемещаются, и их расположение вполне очевидно для игрока.

Выберите GameObjectCreate Empty, чтобы создать пустой объект. Имейте ввиду — вы не увидите его на экране.

Выберите новый GameObject в меню Hierarchy и внесите следующие изменения в окне Inspector:

  1. Измените название на floor.
  2. Установите координаты Position в (0, -3,3, 0).
  3. Установите значение Scale (4, 1, 1).
  4. Нажмите Add Componentи добавьте компонент Box Collider 2D, выбрав Physics 2DBox Collider 2D.

Теперь вы должны увидеть зеленый коллайдер внизу сцены, как показано на следующем изображении:

Примечание: вы не добавили 2D-компонент Rigidbody в игровой объект пола, потому, что пол должен ограничивать только движение мыши, но гравитация на него при этом не должна никак влиять

Запустите сцену. Теперь мышь должна падать на пол и оставаться на месте.

Однако, если вы сейчас активируете реактивный ранец, мышь все равно покидает комнату, поскольку потолка в локации все еще нет.

Попробуйте добавить потолок самостоятельно, установив координаты Position в (0, 3.7, 0), и переименовав объект в ceiling. Вы также можете воспользоваться подсказкой ниже:

Выберите GameObjectCreate Empty, чтобы создать новый объект. Выберите его в меню Hierarchy и внесите следующие изменения в окне Inspector:

  1. Измените название на ceiling.
  2. Установите координаты Position в (0, 3.7, 0).
  3. Установите значение Scale (4, 1, 1).
  4. Нажмите «Add Component» и добавьте компонент Box Collider 2D.

Теперь в игровой сцене есть и пол, и потолок. Запустите игру и попробуйте подняться вверх и опуститься вниз – теперь мышь не выходит за границы экрана.

Тени в реальном времени

И в плоских, и в трехмерных играх тени нужны, чтобы игрок мог легко определять расстояния между объектами игрового мира. Активнее всего в современных 3D-играх используется карта теней. Чтобы создать пейзаж, залитый солнцем, игра учитывает местонахождение источника света (на него указывает специальный вектор) и сохраняет информацию о глубине в Z-буфер. Получается карта теней, в которой указано все, что видно со стороны солнца. Когда строится картинка от лица зрителя, игра сравнивает положение каждого пикселя в трехмерном пространстве с картой теней; те участки, что находятся в тени, отображаются без учета источника освещения. Если освещение изменится, нужно создавать новую карту теней — так получаются подвижные в реальном времени тени. Лучший пример раннего использования этой технологии — Tom Clancy’s Splinter Cell

, где тени играют важную роль в механике игры.

Создание системы частиц

Чтобы добавить систему частиц на сцену, выберите GameObjectEffectsParticle System. Вы сразу заметите изменение на сцене: система частиц покажет свое поведение, когда будет выбран объект.

Чтобы частицы всегда исходили из реактивного ранца, вам нужно добавить систему частиц в качестве дочернего элемента мыши. В меню Hierarchy перетащите Particle System поверх мыши, чтобы добавить его в качестве дочернего элемента. Это должно выглядеть следующим образом:

Теперь, когда система частиц реактивного ранца движется правильно, вам нужно ее настроить таким образом, чтобы она напоминала пламя. Выберите Particle System в меню Hierarchy и измените следующие данные в окне Inspector:

  1. Переименуйте систему частиц в jetpackFlames.
  2. Установите Position в (-0,62, -0,33, 0).
  3. Установите координаты Rotation в положение (65, 270, 270).
  4. Найдите компонент Particle System и установите следующие свойства:
  • Установите Start Lifetime на 0,5
  • Установите Start Size = 0,3
  • Нажмите Start Color и установите Red = 255, Green = 135, Blue = 40 и оставьте Alpha = 255.
  • Разверните раздел «Emission» и установите для параметра «Rate over Time» значение 300.
  • Разверните раздел Shape и убедитесь, что установлено значение Cone. Также установите Angle = 12, Radius = 0.1 и Randomize Direction = 1.

Вот как должна выглядеть ваша система частиц:

Еще раз проверьте, правильно ли вы установили все настройки, как показано на этом изображении:

Настройка среды в Unity

Начнем с самого простого: загрузки и настройки Unity

.

Загрузите последнюю версию с официального сайта или торрента и запустите установочный файл.

Для редактирования кода в Unity (4.0.1 и выше) служит редактор MonoDevelop. Если вы работаете в Windows, вы можете (и я вам советую) использовать альтернативый редактор Visual Studio 2013 Desktop (C#) для Windows, после чего в настройках Unity измените редактор по умолчанию на Visual Studio.

Выбор редактора в Unity

Mac OS X

— существенно лучше, чем старый MonoDevelop 2 в предыдущих версиях Unity. Он, конечно, далек от совершенства, но ничего лучшего под на Mac не придумано.

На каком языке программировать в Unity?

Unity позволяет кодировать на трех языках: JavaScript, C# и Boo. Рекомендую использовать C# — он более мощный и проще.

Научиться пользоваться в главным интерфейсом Unity

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

Вот несколько ссылок, которые могут быть вам полезными:

  • : основа всех основ. Не зная интерфейса, вы не сможете создавать игры в Unity 3D
  • : изучение этого раздела поможет вам создать свою собственную сцену
Первая сцена. Создаем новый проект.

Выберите меню File, а затем создаqnt новый проект. Не выбирайте нивакой стандартный пакет на первое время. Вы можете повторно импортировать их позже, если вы захотите, просто поначалу они будут просто сбивать вас с толку.

Создание нового проекта в Unity

Выберите 2D настройки. Как и прежде, вы можете изменить этот флаг в настройках проекта позже.

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

Улучшение пламени ранца

Теперь вам нужно немного изменить цвет некоторых частиц пламени, чтобы добиться большей реалистичности. Выберите jetpackFlames в меню Hierarchy и найдите раздел под названием Color over Lifetime в компоненте Particle System. Включите его, установив флажок слева от названия раздела и щелкните на заголовок, чтобы развернуть раздел.

Примечание: прямо сейчас цвет просто белый, не смотря на то, что вы настраивали цвет пламени как оранжевый. Однако Color over Lifetime работает немного по-другому — вместо установки цвета этот параметр умножается на значение «Start Color».

Поскольку умножение любого цвета на белый дает исходный цвет, вы всегда видите оранжевый цвет. Но вы также можете изменить Color over Lifetime на градиент и установить конечный цвет на 0 альфа. Таким образом, частицы будут постепенно исчезать.

Щелкните белую рамку цвета в «Color over Lifetime», чтобы открыть редактор градиентов, как показано на изображении ниже:

Выберите верхний ползунок справа и изменив значение Alpha value на 0, закройте окно.

Запустите сцену. Посмотрите — теперь пламя реактивного ранца выглядит намного реалистичнее.

Создание секций уровня

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

Вот так будет выглядеть уровень в дальнейшем:

Процесс создания уровня состоит из трех этапов:

  • Добавление фона
  • Добавление пола и потолка
  • Добавление предметов декора

Добавление фона комнаты

В окне «Project» откройте папку «Sprites» и перетащите спрайт bg_window на сцену в произвольном месте.

Выберите bg_window в меню Hierarchy и установите Position в (0, 0, 0).

После размещения центральной части комнаты, вам нужно добавить еще несколько элементов — один слева и один справа от окна.

Найдите bg в окне Project и перетащите его на сцену дважды. Первый раз слева, а второй раз справа от bg_window также в произвольном месте.

Вот что у вас должно получиться:

Примечание: хотите знать, почему вы должны строить комнату вокруг (0, 0, 0) точки? Это делается для того, чтобы вы могли добавить все комнаты к пустому игровому объекту.

Использование инструмента Vertex Snapping

Вы можете просто расположить фоновые элементы в локации в зависимости от размера каждого элемента, однако это будет не очень удобно реализовывать на практике.

Вместо этого вам нужно использовать функцию Vertex Snapping Unity, которая позволяет легко размещать элементы рядом друг с другом.

Чтобы использовать Vertex Snapping, вам нужно удерживать клавишу V после выбора GameObject.

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

Обратите внимание, как синяя точка показывает, какая вершина будет использоваться в качестве точки разворота. После выбора точки вращения удерживайте левую кнопку мыши и начните перемещать объект.

Использование сортировки слоев

Выберите mouse в меню Hierarchy и найдите компонент «Sprite Renderer» в окне Inspector. Вы должны увидеть раскрывающийся список «Sorting Layer», который в настоящее время имеет значение «Default», как показано на изображении ниже.

Откройте раскрывающийся список, и вы увидите список всех слоев, которые есть в вашем проекте. Прямо сейчас в этом списке должен быть только Default.

Нажмите на опцию Add Sorting Layer…, чтобы добавить больше слоев сортировки. Добавьте следующие слои, нажав кнопку +:

  1. Background
  2. Decorations
  3. Objects
  4. Player

Когда вы закончите, редактор Tags & Layers должен выглядеть следующим образом:

Теперь снова выберите mouse в меню Hierarchy и установите для параметра Sorting Layer значение Player.

Теперь выберите три фоновых фрагмента, bg_window, bg и bg (1) в меню Hierarchy, и установите для Sorting Layers значение Background.

Выберите jetpackFlames меню Hierarchy и в окне Inspector найдите вкладку «Renderer». Установите Sorting Layer в Player и Order in Layer в -1.

Запустите игру, и вы увидите, что пламя реактивного ранца теперь отображается перед фоном.

Австралийцы выбрали 10 лучших 3D-игр для ПК

Редакция крупного австралийского компьютерного журнала APC выбрала десятку лучших игр с поддержкой 3D.

Этот рейтинг редакция APC составила по собственным субъективным ощущениям, однако список может быть любопытен всем, кто ещё не определился с новогодним подарком для родных, друзей или себя любимого. Если кто вдруг не знает, для того, чтобы любимые компьютерные игры приобрели объём, понадобится монитор с частотой не менее 120 Гц, комплект NVIDIA 3D Vision и видеокарта с поддержкой технологии 3D Vision. Итак, какие 3D-игры считаются лучшими на другом конце света?

1. BATTLEFIELD BAD COMPANY 2

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

2. TOMB RAIDER UNDERWORLD

В NVIDIA вряд-ли назвали бы эту игру наиболее подходящей для 3D, но знойная брюнеточка в коротких шортах заслужила самые восхищённые отзывы на игровых форумах. Думается, на классные пейзажи никто особо и не смотрит — Лара Крофт, мечта геймера, теперь в настоящем 3D.

3. МЕТРО-2033

Очень достойный шутер от парней из украинской студии A4. Игра по бестселлеру Дмитрия Глуховского пришлась по нраву не только русскоязычным геймерам, но и получила высочайшие оценки от западных игровых сообществ. Мрачные тоннели постапокалиптического метрополитена, чудовища-мутанты и непередаваемая атмосфера разрушенного мира — всё это особенно круто выглядит в 3D.

4. BATMAN ARKHAM ASYLUM

Одна из игр, которая ещё при создании «затачивалась» специально под 3D — тёмный рыцарь Бэтмэн наводит шороху в стационаре психоневрологического диспансера для особо отличившихся психопатов. Отлично реализована фишка с вылетающими из экрана объектами.

5. MAFIA 2

Великолепное продолжение легендарной MAFIA становится ещё атмосфернее в формате 3D. История обычного парня, который выбрал для себя путь гангстера со всеми его прелестями и ужасами. Шедевр компьютерного искусства.

6. JUST CAUSE 2

Игра сочетает в себе сразу несколько жанров — шутер, авиасимулятор, гонки. JUST CAUSE 2 славится своими реалистичными ландшафтами, которые в 3D выглядят ещё лучше.

7. NEED FOR SPEED: SHIFT

Продолжение известнейшей серии симуляторов уличных гонок создавалось с расчётом на 3D. Вообще, стерео-формат прекрасно подходит именно для гонок и новый NFS — отличное этому подтверждение.

8. LOST PLANET 2

Люди против инопланетных монстров — старая сказка на новый лад. Фантастическая история о принуждении к миру целой планеты, населённой гигантским насекомообразными монстрами. Игра неплохо использует преимущества формата 3D и DirectX 11.

9. AVATAR

Вышедшая на две недели раньше фильма Джеймса Кэмерона, игра «Аватар» рассказывает новую историю о событиях на Пандоре. Как и фильм, игра изначально ориентировалась на формат 3D, поэтому стоит попробовать именно стерео-версию. «Avatar. The Game» стала бесплатным приложением к комплекту NVIDIA 3D Vision.

10. CALL OF DUTY: BLACK OPS

Новая игра ориентированная на новый формат. Занимает последнее место в австралийской десятке именно по причине своей новизны, но геймеры уже отмечают преимущества именно 3D-версии шутера. Достойное продолжение отличной серии, полное отборнейшей «клюквы» про русских и Россию в духе Тома Клэнси. Однозначно, одна из лучших игр уходящего года. Не пожалейте денег на 3D-апгрейд своего компьютера, она того стоит.

Объекты для декорации комнаты

Для украшения комнаты вы можете использовать любое количество книжных шкафов и мышиных норок из папки Sprites в Project browser. Располагайте их по своему усмотрению, например, так:

В Project browser найдите изображение с именем object_bookcase_short1. Перетащите его на сцену так же, как вы делали с фоном комнаты.

Выберите object_bookcase_short1 в меню Hierarchy и установите его orting Layer на Decorations. Также установите координаты книжного шкафа в (3.42, -0.54, 0) или поместите его в любое другое место, которое нравится вам.

Освещение в реальном времени

Осветить объекты в реальном времени можно, просто затенив их по методу Гуро. Но для игр этого мало, ведь даже при самом суровом минимуме эффектов игроку нужны локальные источники освещения — определенного цвета, яркости и с изменением степени освещенности по мере удаления от источника света, поэтому разработчики комбинируют несколько разных техник.

В частности, используются более сложные алгоритмы (например, затенение по Фонгу) на стадии рендеринга. При подсчете учитывается расстояние и позиции источников света, а на итоговый цвет каждого пикселя влияют текстурирование и другие эффекты поверхности. Освещение в реальном времени отлично отработали в Quake

(1996): в мрачных подземельях роль точечных источников света играли факелы на стенах, а роль динамических источников — пролетающие ракеты.

Рейтинг
( 2 оценки, среднее 4 из 5 )
Понравилась статья? Поделиться с друзьями: