Blender GameKit 2/Pumpkin Run - playing with 3D games technology

Материал из Blender3D.

Перейти к: навигация, поиск

Содержание

"Побег Тыквы" - играем с технологиями создания 3D-игр

Автор:
Перевод: Азовцев Юрий aka gumanoed

Используя файл "Pumpkin-Run" мы рассмотрим основные техники создания 3D-игр. Но мы не сможем сделать из вас профессионального дизайнера компьютерных игр за пару страниц и даже за всю книгу. Но здесь вы можете изучить основы и в то же время получить удовольствие от процесса! Я так же призываю вас эксперементировать и играть с Blender.

Вещи, котоые мы изучим в этой главе:

  • Способы загрузки и сохранения сцены Blender
  • Как манипулировать объектами и перемещаться по сцене
  • Освоим основы наложения текстур
  • Как запускать интерактивный режим игрового движка Blender
  • Добавление интерактивных элементы для управления объектами в игре
  • Способы управления камерой и освещением
  • Анимацию объектов
  • Добавление и использование звука

И кое что еще. Многие вещи будут обсуждаться в следующих главах. Но не забывайте что самое важное в игре - это Gameplay! Даже технически простые игры могут быть популяны на протяжении долгого времени (например "Тетрис"). Сконцентрируйтесь на создании игры, которая будет доставлять удовольствие другим или сами получайте удовольствие от процесса создания!

Создание окружения

Запустите Blender, щелкнув дважды по его иконке в меню приложений или на рабочем столе. Blender запустится с базовыми настройками сцены, как это показано в Иллюстрации (p-01). В зависимости от операционной системы, настроек экрана и способа установки Blender внешний вид после запуска может слегка отличаться.

Иллюстрация (p-01). Внешний вид Blender сразу после запуска
Увеличить
Иллюстрация (p-01). Внешний вид Blender сразу после запуска

Большое окно - окно 3D-вида, окно в 3D-мир нашей blender-сцены. Розовый квадрат по середине - это куб. Сейчас мы смотрим на сцену находясь сверху - это называется "Вид сверху". Объект, нарисованный линиями справа снизу от куба - это камера. Объект справа от куба - источник света (лампа).

image:CameraSelected.png

Сейчас переместите курсор вашей мыши на камеру и щелкните Правой Кнопкой по ней. Камера окрасится в темно розовый цвет. Цветные стрелки называются 3D-виджетами. Удерживая их Левой Кнопкой Мыши вы можете перемещать объект по соответсвующим осям.

В Blender правая кнопка мыши (ПКМ) используется для выбора объекта!

Теперь, мы сменим точку обзора (вид) сцены. Переместите курсор в большое окно 3D-вида, нажмите и удерживайте нажатым колесо мыши (Средняя Кнопка Мыши СКМ). Двигая мышь в разные стороны вы заметите как вся сцена вращается.

Blender разработан для эффективной работы с трех-кнопочной мышью. Но несмотря на это, если у вашей мыши всего две кнопки вы можете заменить вреднюю кнопку мыши сочетанием нажатой клавиши ALT и удержанием Левой Кнопки Мыши (ALT-ЛКМ).

Давайте вернемся в "Вид Сверху", нажав NUM-7 (Цифра 7 на дополнительной цифровой клавиатуре справа от клавиши Enter). Эти действия должны дать вам основное представление о способах навигации в 3D пространстве через 2D окно программы. Более подробно эта тема описана в главе об Основах Blender.

Далее, мы создадим поверхность земли для нашей игры. Выберите куб, щелкнув по нему ПКМ. Если выделение прошло успешно, куб должен ограсится в темно розовый цвет. Теперь, нажмите клавишу X либо клавишу DEL для удаления куба из сцены. Blender запросит у вас подтверждение на удаление объекта, если вы переместите курсор за область появившегося меню - удаление будет отменено, если вы подтвердите действие, щелкнув левой кнопкой мыши или нажав Ender - куб исчезнет из сцены.

Вновь добавляемые объекты всегда появляются в месте расположения 3D-курсора. Положение 3D-курсора задается щелчком левой кнопкой мыши. Разместите 3D-курсор в центре сцены, щелкнув туда ЛКМ.

Теперь, нажмите Пробел для вызова меню инструментов (Toolbox). Это что то вроде главного меню Blender. Выберите Add->Mesh->Plane и подтвержите добавление объекта щелчком ЛКМ. Плоскость добавилась и вы можете проверить что это действительно плоскость, удерживая нажатой Среднюю Кнопку Мыши и перемещая мышь. После этого, вернитесь обратно в вид сверху, нажав NUM-7.


Информация о масштабировании объекта в Заголовке Окна 3D-вида

Поместите курсор мыши ближе к объекту, нажмите клавишу S и двигайте мишь. Вы заметите как плоскость начинаем менять размер в зависимости от перемещений вашей мыши. Теперь нажмите и удерживатей CTRL, в то время как двигаете мышью - изменение размера будет происходить шагами по 0.1. Увеличивайте размер плоскости, пока она не достигнет 10.0 по всем осям. Что бы это определить - смотрите на информацию о масштабировании в заголовке, внизу окна 3D-вида. При достижении нужного размера нажмите ЛКМ или Enter для завершения операции.

Если вы не можете добиться увеличения размера до 10.0 или хотите отменить операцию - нажмите ПКМ или клавишу ESC. Более того, клавиша ESC отменяет любую операцию в Blender не изменяя объект

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

Сейчас я покажу вам как можно настроить внешний вид Blender под себя и в особенности мы обратим внимание на возможность изменения расположения окон. image:SplitEdge.png Переместите курсор мыши на нижнюю границу окна 3D-вида и убедитесь что курсор изменил свой вид на двойную вертикальную стрелку.

Теперь, нажмите Среднюю Кнопку Мыши или ЛКМ. В месте расположения курсора появится меню:
image:SplitMenu.png

Щелкните по "Split Area" (разделить область). Переместите появившуюся линию к середине окна 3D-вида и щелкните ЛКМ. Blender разделит окно 3D-вида в указанном вами месте на два идентичных окна.

Переместите курсор мыши в область правого окна 3D-вида и нажмите Shift-F10. Тип окно изменится на Редактор UV/Изображений. В этом месте мы можем работать с изображениями и текстурами, которые дадут нужный цвет нашей игровой модели.

Все нажатия горячих клавиш в Blender обрабатываются только активным окном (окном, нам которым находится курсор мыши). Нет необходимости щелкать по окну, достаточно навести на него курсор мыши.

Переместите курсор мыши на плоскость в левом окне 3D-вида и выберите ее, если она не выбрана (не обведена розовым цыетом). Теперь, нажмите ALT-Z, плоскость станет затененной в соответствии с расположением источника света в сцене. Нажмите клавишу TAB и на плоскости появяться дополнительные элементы, ребра желтого цвета и вершины (точки, образующие грань) выглядящие как желтые точки по углам. Желтый цвет означает что вершины выбраны.

Теперь проследите что бы указатель мыши находился в окне с плоскостью, нажмите клавишу U и в появившемся меню "UV Calculator" нажмите кнопку "Reset". Представление координат плоскости появится справа в окне Редактора UV/Image. Этот шаг необходим для наложения 2D-изображения (текстуры) на 3D-объект (в нашем случае - просто плоскость). Этот процесс так же называют UV-маппингом (UV mapping). Более подробную информацию о нем можно найти в списке туториалов в разделе ссылок (References).

Переместите курсор мыши в правое окно "UV/Image Editor" выберите в заголовке окна внизу в меню Image пункт Open или воспользуйтесь сочетанием клавиш ALT-O.


Окно выбора изображения
Увеличить
Окно выбора изображения

Должно открыться окно выбора файлов в котором вы можете перемещаться по вашим жестким дискам (по файловой системе). Нажмите и удерживайте Кнопку Меню (в левом верхнем углу окна выбора файлов) - появится меню со списком недавно посещенных мест на вашей файловой системе (в операционной системе Windows список дисков).

Директория, в которой вы сейчас находитесь указана в верхнем поле ввода. Кнопка "P" позволяет переместиться на уровень выше в родительскую директорию.

Используя эти инструменты перейдите на ваш компакт-диск и зайдите в директорию Tutorials/Pumpkin/textures и найдите изображение concgray_q.jpg. Щелкните по нему Левой Кнопкой Мыши и затем нажмите кнопку "Open Image" (для ускорения процесса выбора вы можете щелкнуть по изображению Средней Кнопкой Мыши и он сразу откроется).

Теперь текстура отображается в окне 3D-вида слева. Выйдите из Режима Рекдактирования нажав клавишу "TAB".

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

Пришло время сохранить нашу сцену. Для упрощения процесса мы добавим текстуру внутрь сохраняемого файла-сцены. Для этого выберите в меню "File->External Data-> Pach into ,blend file". Небольшое изображение упаковки появится в панели меню указывая на упакованную сцену. Теперь щелкните в меню "File->Save As" или нажмите клавишу F2 для открытия окна сохранения сцены. Перейдите в домашнюю директорию (как это было описано раньше), введите имя файла-сцены в текстовое поле сверху (по умолчанию там написано untitled.blend) и нажмите кнопку "Save Files" в правом верхнем углу окна.

Добавление объектов из другой сцены

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

Переместите курсор мыши в область окна Редактора UV/Изображений (правое окно после последнего шага) и нажмите сочетание клавиш "SHIFT-F5" для переключения окна в окно 3D-вида.

Нажмите "SHIFT-F1" удерживая курсор мыши над одним из окон 3D-вида, откроется окно Выбора Файла в режиме Добавления (Append - смотрите иллюстрацию), которое позволит нам загрузить объекты из другого .blend файла в нашу сцену.

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

Иллюстрация (#append). Окно Выбора Файла в режиме добавления объектов в текущую сцену
Увеличить
Иллюстрация (#append). Окно Выбора Файла в режиме добавления объектов в текущую сцену

Нажмите и удерживайте кнопку меню в левом верхнем углу окна Левой Кнопкой Мыши. Перед вами развернется список недавно посещенных мест в вашей файловой системе.

Директория, в которой вы находитесь в данный момент указанна в верхнем текстовом поле. Нажав кнопку "P" слева сверху, под кнопкой меню, вы переместитесь на один уровень вверх в родительский каталог.

Используя этот способ перейдите на DVD-диск и зайдите в директорию Tutorials/Pumpkin/. Теперь, щелкните Левой Кнопкой Мыши (ЛКМ) по файлу Pumpkin_Solo.blend. Вы попадете в файл и увидите его содержимое в окне Выбора Файла в виде структуры каталогов.

Иллюстрация (#browse). Обзор внутреннего содержимого .blend файла
Увеличить
Иллюстрация (#browse). Обзор внутреннего содержимого .blend файла

Когда вы откроете файл, содержимое сцены будет представлено в виде структуры каталогов. Щелкните по каталогу "Objects" Левой Кнопкой Мыши. Вы увидите список объектов, находящихся в этой сцене (см. иллюстрацию [browse]). Выберите все объекты, нажав клавишу A. Подтвердите открытыи нажатием клавиши Enter или щелчком ЛКМ по кнопке "Load Library" в правом верхнем углу окна.

image:PumpkinTopView.png

Вы можете видеть нашу тыкву как оранжевую точку в центре плоскости в левом окне 3D-вида.

Переключите правое окно во второе окно 3D-вида нажав Shift-F5 (провледите что бы при этом курсор мыши бал над правым окном). Вы получте такой же 3D-вид сцены сверху но в затененном режиме. Выберите камеру Правой Кнопкой Мыши. Переместите курсор мыши в правое окно 3D-вида и нажмите CTRL-NUM0. Это сочетание клавиш переключит вас в вид из камеры.

Запускаем (игровой) движок!

Теперь мы можем запустить игровой движок. Удерживая курсор мыши над окном 3D-вида с видом из камеры нажмите клавишу P. Вы увдите нашу тыкву на текстурированной поверхности. Внутри тыквы находится анимированная свечка, отблески пламени которой вы увидите сразу после запуска движка. Для прекращения работы игрового движка и возврата в Blender нажмите клавишу ESC.

Я уже слышу как вы спрашиваете "Это все конечно замечательно, но где анимация?". Дайте мне пару минут и я расскажу о ней.

Переместите курсор мыши в область правого окна 3D-вида и нажмите NUM-3 для переключения в вид сбоку. Приблизъте вид клавишей NUM-+ или вращением колева мыши (можно удерживать клавишу SHIFT для более плавного приближения). Вы так же можете панарамировать вид удерживая Shift+Среднюю Кнопку Мыши и перемещая мышь в разные стороны. Таким образом подготовьте вид для перемещения тыквы.

Выделите наш персоонаж ПКМ (щелкнув в любое место на объекте) и он станет розового цвета по контуру, что значит что объект выбран.

Сейчас мы перейдем в коммандный центр интерактивного поведения объектов в Blender. Что бы сделать это нажмите F4 или кликнте по винему ПэкМену (Logick Buttons) в окне Кнопок снизу.

Иллюстрация x-y. Окно кнопок, Раздел Логики
Увеличить
Иллюстрация x-y. Окно кнопок, Раздел Логики

Используйте меню с надписью "Static" слева и измените способ поведения тыквы на "Dynamic". Эта опция включает физически правильное поседения объекта в соответствии с такими физическими явлениями как притяжение, отскакивание и реакции на соударения.

Если вы еще раз запустите игровой движек, то не заметите особой разницы. Но мы это изменим через минуту.

Отдалите вид в правок окне 3D-вида (вы помните, это делается вращением колесика мыши либо нажатием клавиш NUM-+ и NUM--). Убедитесь что тыква попреднему выделенна (обведена розовым по контуру, если нет - щелкните по ней Правой Кнопкой Мыши). Нажмите клавишу G и немного переместите мышь. Персоонаж последует за движением вашей мыши. Нажатие клавиши G инициализирует "grab-mode" (режим захвата или режим перемещения), в котором вы можете перемещать объект в 3D-пространстве.

image:SideViewPumpkin.png

Перемещайте объект строго вверх, пока он не исчезнет из вида из камеры (в левом окне 3D-вида) и подтвердите новую позицию нажатием Левой Кнопки Мыши. Если вы не уверенны в правильной позиции объекта вы всегда можете отменить перемещение нажатием клавиши "ESC" либо Правой Кнопки Мыши (до нажалия ЛКМ) и попробовать еще раз.

Теперь переместите курсор в левое окно 3D-вида (в вид из камеры) и нажмите клавишу P для запуска игрового движка. Тыква упадет сверху и останется на земле. Нажмите клавишу ESC" для выхода из игрового движка.

Материалы для режима реального времени

Для создания более реалистичного движения нам потребуется сделать землю слегка упругой, что бы тыква при падении некоторое время отскакивала от нее. Эти настройки можно найти в разделе Материалов (F5). Выберите плоскость представляющую землю и нажмите F5 для переключения в раздел Материалов в Окне Кнопок (снизу). Сейчас здесь нет материалов, давайте нажмем "Add New" и создадим новый. Если сейчас вы запустите игру, то заметите что выбранный материал исчез. Все из за того, что по умолчанию Blender использует новую "Мультитекстурную Систему Материалов" ("Blender Multitexture Materials"). Для появления выбранных материалов в игровом режиме можно выбрать старую систему "Texture Face Material" или добавить новый канал к материалу. Это может быть сделано на панели "Texture" справа в раздели Materials. Просто нажмите кнопку "Add New".

Если панель "Texture" находится за пределами видимой зоны окна Кнопок вы можете панарамировать вид панелей. Для этого, ужерживайте нажатой Среднюю Кнопку Мыши и перемещайте мышь влево. Либо использовать колесо мыши, повращать его. Для увеличения/уменьшения вида панелей вы так же можете воспользоваться клавишами "NUM-+" и "NUM--" на дополнительной цифровой клавиатуре!

Далее, нам потребуется определить степень упругости нашей поверхности земли. Найдите в Окне Кнопок, в разделе Material на панели "Materials" кнопку "DYN" и активируйте ее (проверьте что бы она была нажата). Набор кнопок на панели изменится и вы сможете изменять значение параметра "Restitut" с помощью слайдера. Установите этот параметр в значение 0.8. Этот параметр влияет на количество энергии, возвращаемое материалом при столкновении. Два объекта с параметром restitut равным 1.0 будут слаткиваться и отскакивать вечно. 0.0 означает полное отсутствие отскока.

image:DYNGroundMaterial.png

Тыква уже имеет материал с параметром restitut равным 0.8. Сразу после настройки материала поверхности земли вы можете сного запустить игровой движек (нажав клавишу P) и посмотреть как тыква упадет и начнет отскакивать как резиновый мячик. Как раз для нашей забавной игры.

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

Раздел логики (F4) в Окне Кнопок разделен на 4 колонки. Мы уже использовали левую колонку для задания параметров объекта, заставляя нашу тыкву падать. Три следующих используются для создания интерактивности в нашей игре.

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

Колонки называются "Sensors" (сенсоры), "Controllers" (контроллеры) и "Actuators" (актуаторы). Вы можете считать Сенсоры органами чувств живого организма. Контроллеры - это мозг. А Актуаторы будут мускулами, приводящими в действие организм.

Левой Кнопкой Мыши нажмите кнопку "Add" по одному разу в каждой из колонок для создания Сенсорного Логического Блока, Логического Блока Контроллера и Актуатора (см. Иллюстрацию p-lbs).

Иллюстрация p-lbs. Только что созданные Логические Блоки
Увеличить
Иллюстрация p-lbs. Только что созданные Логические Блоки

Типы созданных логических блоков практически полностью подходят под нашу первую задачу. Потребуется сделать лишь незначительные изменения. В первом Логическо Блоке (Сенсор) ЛКМ нажмите и удерживайте кнопку "Always" и в выпавшем меню выберите "Keyboard".

image:LBsChangeType.png

Теперь ЛКМ щелкните по полю "Key" в нем появится надпись "Press ant key" (нажмите любую клавишу). Нажмите на клавиатуре клавишу, которую вы хотите использовать для перемещения тыквы вперед (например, клавишу "стрелка вверх").

Теперь внимательнее посмотрим на Контроллер Движения. Здесь мы определим как игрок должен двигаться. Третья строка с заголовком "Force" определяет сколько силы должно быть приложено когда Контроллер Движения активирован (в нашем случае, когда нажата кнопка "стрелка вверх"). Три числа соответствуют направлениям по осям X, Y и Z.

Если вы посмотрите на нашу сцену, то заметите что ось Y указывает прямо по направлению игрока. Так что, для движения вперед нам нужно приложить силу с положительным значением вдоль по оси Y. Что бы сделать это нажмите и удерживайте ЛКМ второе число в строке "Force". Перемещайте мышь вправо и значение начнет увеличиваться. Доведите его до 10. Вы можете нажать клавишу CTRL для изменения значения поля равными долями по 10. С другой стороны, вы можете удерживая SHIFT щелкнуть ЛКМ в поле для ручного ввода точного значения с клавиатуры (в новых версиях Blender вы можете просто щелкнуть ЛКМ в центре поля).

Сделав настройки близкие к представленым на иллюстрации (p-wire) нам нужно связать Логические Блоки. Линии связи будут передавать информацию от одного Логического Блока к другому, в нашем случае, от Сенсора к Контроллеру.

Иллюстрация p-wire. Настройка Логических Блоков для движения персоонажа вперед
Увеличить
Иллюстрация p-wire. Настройка Логических Блоков для движения персоонажа вперед

Щелкните и удерживайте ЛКМ по желтому шару на блоке Сенсора Клавиатуры. Тяните появившуюся линию к желтому кругу Контроллера AND. Отпустите ЛКМ когда курсор окажется над желтым кругом и два блока окажутся связанным. Подобным образом свяжите желтый шар в правой части Контроллера AND с желтым кругом Актуатора Движения.

Для удаления линии связи наведите курсор мыши на ненужное соединение, оно окажется подсвеченным. Теперь, выделенное соединение можно удалить нажав клавишу X или клавишу DEL.

Всегда давайте вашим Логическим Блокам осмысленные названия. Это поможет проследить логику работы вашей игры и использовать специфические блоки позже. Для переименования блока щелкните ЛКМ в поле name и наберите с клавиатуры новое название (используйте только латинские символы и цифры). В противном случае, Blender проименует блоки автоматически, задав им уникальные имена по схеме "sensor1", "sensor2" для сенсоров; "act1", "act2" для актуаторов и т.д. Вы можете не беспокоиться о совпадении имен логических блоков, но такой автоматический способ именования не очень информативен.

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

Что бы сделать движение более интересным мы можем добавить прыжки. Для этого увеличте значение 3-го числа в строке "Force" (количество прикладываемой силы по оси Z) до значения 20.0. Если теперь вы попробуете запустить игровой движек еще раз и начнете двигать персоонажа то заметите проблему: если держать кнопку движения вперед тыква улетает в бесконечность. Все из-за того, чо сила прилагается к персоонажу даже когда он в воздухе (не касается поверхности земли).

Для решения этой проблемы нам нужно убедиться что силы прикладываются только когда персоонаж касается земли. Это именно тот случай, когда Сенсор Touch (прикосновение) вступает в игру. Добавьте новый Сенсор щелкнув в колонке Sensors по кнопке "Add" Левой Кнопкой Мыши. Измените тип сенора на "Touch" как мы это делали с Сенсором нажатия кнопок Клавиатуры.

Свяжите Сенсор Touch с уже имеющимся Контроллером AND. Теперь Сенсор Клавиатуры и Сенсор Touch связаны с одним общим контроллером AND. Тип контроллера "AND" включится и передаст команду на выполнение Актуатора Движения только если будет нажата клавиша И персоонаж касается земли. Это наиболее простой способ создавать логику поведения вашей интерактивной сцены. Кроме типа "AND" вы можете использовать контроллеры "OR", Expression и Python (скриптовый язык Blender) которые позволяют получить большую гибкость при создании логики в ваших играх. Поскольку теперь силы будут прилогаться не более секунды (пока персоонаж не оторветься от земли) мы можем увелисить из значения до 50.0 для силы по оси Y и 100.0 для силы по оси Z. Попробуйте поэксперементировать с этими значениями что бы понять как эти силы работают.

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

Для придания движению большей динамики мы добавим Логический Блок заставляющий нашу тыкву постоянно подпрыгивать. Добавьте новый Контроллер и новый Актуатор, нажав кнопки "Add" в соответствующих колонках. Дайте новому актуатору имя "AlwaysJump" (всегда подпрыгивать). Свяжите Cенсор Touch с новым Контроллером AND. Выход нового Контроллера AND свяжите со входом Актуатора "AlwaysJump".

Иллюстрация x-y. Структура логических блоков для добавления постоянного подпрыгивания
Увеличить
Иллюстрация x-y. Структура логических блоков для добавления постоянного подпрыгивания

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

Больше контроля

Сейчас мы добавим еще несколько Логических Блоков и дадим возможность игроку поворачивать персоонаж с помощью клавиш со стрелками.

Добавьте новый Сенсор, Контроллер и Актуатор нажав кнопку "Add" в каждой из колонок. Измените тип Сенсора на "Keyboard" в меню чуть справа настройте срабатыванием сенсора по нажатию клавиши "стрелка вправо". Не забудьте дать имя Логическому Блоку, нажав ЛКМ в поле name (наовите его "LeftArrow"). Свяжите Сенсор "LeftArrow" c Контроллером "pass2". В свою очередь, выход Контроллера "pass2" свяжите с Актуатором "Left".

Иллюстрация x-y. Логические блоки для управления персоонажем с клавиатуры
Увеличить
Иллюстрация x-y. Логические блоки для управления персоонажем с клавиатуры

Введите значение "3.0" в третье поле (ось Z) в строке "Torque". Torque - сила, поворачивающая объект вокруг своей оси. В нашем случае, приложение этой силы повернет персоонажа вокруг вертикальной оси. Запустите игровой движек и опробуйте результат. При нажатии клавиши "Стрелка Влево" тыква сделает поворот влево. Повторите последовательность операций но в качестве клавиши в Сенсоре введите "Стрелку вправо". В поле силы по оси Z в строке Torque введите отрицательное значение "-3.0". Поворот будет осуществлятся в другую сторону. Сверяйтесь с иллюстрацией x-y.

Обычно, последние донастройки и "доводки" параметров делают во время игры. Это интерактивный процесс требующий наличия некоторого опыта.

Управление камерой

В этом разделе я покажу как настроить камеру для слежения за персоонажем, при этом сделать ее поведение похожим на поведение настоящего оператора.

Переместите курсор мыши в правое окно 3D-вида и отдалите вид, используя NUM-- либо покрутите колесо мыши. Найдите камеру и щелкните по ней Правой Кнопкой Мыши.

image:LBCameraType.png

Убедитесь что в Окне Кнопок попрежнему открыт раздел Логики (F4). Добавьте новый Сенсор, Контроллер и Актуатор, как мы делали это раньше. Свяжите эти три логических блока между собой и поменяйте настройки Актуатора на "Camera Actuator". Camera Actuator будет управлять перемещением камеры, делая его плавным, как при реальной съемке ручной камерой.

Иллюстрация x-y. Логические Блоки управления камерой в сцене
Увеличить
Иллюстрация x-y. Логические Блоки управления камерой в сцене

На блоке "Camera Actuator" щелкните в поле "OB:" и введите имя ибъекта, представляющего нашего персоонажа - "Pump". Теперь камера будет следить за этим объектом. Нажмите и удерживайте ЛКМ в поле "Height:" и двигайте мышку права увеличивая значение параметра до 2.0. Это высота, на которой камера будет находиться, следя за объектом.

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

Параметры "Min:" и "Max" определяют минамальное и максимальное расстояние до объекта, на которое камера сможет приближаться/отдаляться от объекта. Я выбрал значения "Min :4.0" и "Max: 7.0". Запустите игровой движок ("P") и посмотрите как работает новый Актуатор Камеры. Поэкспериментируйте со значениями параметров.

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

Освещение реального времени в игровом движке Blender реализованно через подсистему OpenGL и использует возможности аппаратного ускорения вашей видеокарты. Ресурсами видеокарты просчитываются трансформации и освещение сцены и объектов.

Найдие в окне 3D-вида Лампу и выберите ее с помощью ПКМ. Используйте клавишу G для ее перемещения. Обратите внимание на световые эффекты на текстурированном виде. На иллюстрации (p-lig) слева наш персоонаж освещен, а справа свет на него не падает. Попробуйте двигать лампу вокруг тыквы, вы заметите как вид освещения текстуры меняется в режиме реального времени. Если поместить источник света под тыквы - это даст "устрашающий" эффект.

Иллюстрация (p-lig). Разница между освещенным и не освещенным персоонажем
Увеличить
Иллюстрация (p-lig). Разница между освещенным и не освещенным персоонажем

В Blender система освещения реального времени не создает теней. Тень для тыквы была создана отдельно. Так же, всегда помните что источники освещения реального времени могут "тормозить" игру. Старайтесь использовать как можно меньше объектов с освещением реального времени.

Более обширная информация о возможностях настройки ламп для системыы освещения реального времени приведена в разделе Reference (ссылки).

Анимация объектов

Здесь я опишу базовые моменты совмещения сисемы анимации и игрового движка в Blender. Кривые анимации (Ipo-кривые) в Blender полностью интегрированы и используются как для обычно анимации (линейной) так и для интерактивной 3D-графики, описывающейся в этой книге.

Нажмите Shift-F1 или используйте раздел Menu->Append and Link. В окне выбора файлов перейдите на CD-диск и выберите Tutorials/Pumpkin/Door.blend. Щелкните по объекту и выберите все, нажав клавишу "A", после чего, подтвержите выбор клавишей "Enter". Эта операция добавит стену с деревянной дверью в нашу сцену. Тыква будет ударяться о стену и дверь при приближении к ним. Определение взаимодействий игровой движок Blender делает автоматически.

Перейдите в правое окно 3D-вида и переключитесь в Вид Сверху (NUM7) и приблизте вид (NUM+) таким образом, что бы более подброно рассмотреть дверь. У двери есть имя и оси координат, вы должны легко найти ее по этим признакам. Для облегчения навигации переключитесь в режим отображения сеткой (Z). Выберите дверь ПКМ (она должна стать розовой по контуру).

Сейчас мы сделаем простую анимацию используй ключевые кадры.

1. Убедитесь что слайдер кадров (текущий каждр анимации) установлен в 1. Для этого нажмите Shift-СтрелкаВлево.
image:CurrentFrame.png

2. Нажмите клавишу I и в появившемся меню выберите тип создаваемого ключа анимации Rot
image:InsertKey.png

3. Теперь задайте длительность анимации нажав 5 раз клавишу Стрелка Вверх что переведет вас в 61 кадр. Игровой движок воспроизводит анимацию со скоростью 30 кадров в секунду, в соответствии с чем наша анимация будет длиться 2 секунды.

4. Нажмите клавишу R (при это убедитесь что курсор мыши находится в окне 3D-вида с видом сверху) и поверните дверь на 150 градусов по часово стрелке. Вы можете контролировать угол поворота в заголовке окна 3D-вида. Для более точного управления углом поворота нажмите и держите клавишу CTRL во время вращения. После поворота нажмите ЛКМ или клавишу Enter для подтверждения действия.

5. Вставьте еще один ключевой кадр нажав клавишу I и сново выбарите в выпадающем меню тип Rot.

6. Вернитесь в 1-й кадр нажав клавиши Shift-Клавиша Влево и запустите внимацию двери сочетанием клавиш Shift-Alt-A. Вы увидите как дверь открывается, но после 51 кадра анимация будет продолжаться до 250 и затем произойдет повтор.

7. Нажмите клавишу Esc для выхода из режима просмотра анимации
image:RotateDoor.png !Samo пожалуйсто, добавь красивую стрелку для иллюстрации анимации

Пока дверь выбрана, переключитесь в Окне Кнопок в раздел Логики, нажав клавишу F4. Добавьте Сенсор, контроллер и Актуатор, свяжите их и дайте соответсвующие анимации двери имена. Измените тип сенсора на Keyboard Sensor и задайте в качестве клавиши "Пробел". Поменяйте тип актуатора на Ipo тип.

Используя меню измените тип Ipo Актуатора на "Ping Pong". Щелкните -ЛКМ в поле "End" и введите значение 61 (смотрите на иллюлстрацию (p-ipo)). В этом случае Ipo-актуатор будет воспроизводить анимацию открывающейся двери с 1 по 61 кадр. Новая инициализация актуатора приведет к процессу закрывания двери (из-за установленного нами режима "Ping Pong").

Иллюстрация (p-ipo). Настроки логических блоков для проигрывания Ipo-анимации в режиме "Ping Pong"
Увеличить
Иллюстрация (p-ipo). Настроки логических блоков для проигрывания Ipo-анимации в режиме "Ping Pong"

Проиграйте сцену (клавиша P) в текстурированном режиме. Теперь при нажатии клавиши Пробел дверь будет открываться. При повторном нажатии - закрываться. Если персоонаж окажется на пути движения двери - дверь ударит его и заставит сместиться. Для отображения кривых анимации (Ipo-кривых) переключите одно из окон в Окно Ipo-кривых сочетанием клавиш Shift-F6.

Тонкая настройка сцены

Возможно вы заметили проблему в нашей текущей сцене: персоонаж может "взбираться" (практически взлетать как ракета) на стену. Все из-за наличия прыжков при каждом прикосновении к другим объектам, даже к стене.

Выберите тыкву и посмотрите на Сенсор Touch. Поле "MA:" пусто. Параметр "MA:" подразумевает указание имя материала. Если в это поле внести название материала, то Сенсор Touch будет срабатывать только при прикосновении к объекту с данным материалом. В нашей сцене таким объектом будет плоскость земли, которую мы создали в самом начале урока.

image:GroundMaterial.png

Приступим. Выбериет ПКМ плоскость земли и переключитесь в Окне Кнопок в раздел Materials (F5). Найдите здесь панель "Link and Pipleline" и поменяйте имя материала щелкнув по нему ЛКМ и введите "Ground".

Теперь, еще раз выберите тыкву, переключитесь в Окне Кнопок обратно в раздел Logic (F4). Щелкните ЛКМ в поле "MA:" и введите название материала "Ground".

Имена материалов начинающиеся с большой и малой букв в Blender различаются. Материал "ground" и "Ground" два абсолютно разных материлала. Blender будет очищать значение поля, если вы введете несуществующее имя материала. Возможно такое поведение вам покажется странным, но это избавляет от примитивных ошибок которые крайне сложно найти при последующем тестировании программы.

Еще раз попробуйте запустить игру и забраться на стену. Теперь "взлет" по стене не работает.

image:CameraLight.png

Теперь вам, возможно, захочется разместить камеру прямо за тыквой, благодаря чему вид во время игры будет выглядеть лучше. А так же разместить источник света для лучшего освещения персоонажа. Лучше всего это делать в виде сверху, используя клавиши G для перемещения и R для сращения и окно вида из камеры для контроля получаемого эффекта.

И еще одна последняя вещь: было бы хорошо, если бы дверь открывалась только при нахождении персоонажа рядом с ней. Здесь нам поможет сенсор Close.

Добавьте для двери новый Сенсор и измените его тип на "Near". Свяжите его с существующим Контроллером AND (иллюстрация (p-near)). Поле "Dist:" определяет расстояние на котором Сенсор Near начинает реагировать на "актера". Кстати, он будет реагировать на каждого "актера", если поле "Property:" останется пустым. Параметр "Reset: 12.0" - это расстояние между Сеносром Near и объектом, на котором сенсор забывает про объект. Попробуйте изменить значение параметра "Dist:" до 4.0. Теперь вам нужно подойти к двери гораздо ближе, но затем вы сможете отойти назад перед нажатием клавиши "Пробел" что бы избежать удара открывающейся дверью. Теперь дверь открывается по нажатию клавиши "Пробел" и лишь тогда, когда тыква находится около нее. Это отличные настройки для уровней в которых планируется большое количество дверей.

Иллюстрация (p-near). Сенсор Near
Увеличить
Иллюстрация (p-near). Сенсор Near

Добавление звуков

Не бывает игр без звука. Так что, я покажу как добавить звуки для событий в Blender.

image:SoundIcon.png

Зайдите в Окне Кнопок в раздел Display (F10) и найдите кнопку переключения в подраздел Sound. Щелкните по ней ЛКМ. Поскольку у нас еще нет звуков в сцене панель Sound будет пуста. Используйте кнопку с выпадающим меню под блоком "Blender Sound" (щелкните и удерживайте ЛКМ) в котором выберите пункт "Open New". Откроется окно выбора файлов. Перейдите на диск и из директории Tutorials/Pumpkin/samples/ загрузите файл DoorOpen.wav.

Иллюстрация x-yA. Раздел Sound с загруженным семплом
Увеличить
Иллюстрация x-yA. Раздел Sound с загруженным семплом

Blender способен создавать 3D звук (звук идущий из определенного места в сцене) и предоставляет множество инструментов для настройки. Но для нашего примера вполне подойдут установки по умолчанию и нам нет необходимости изменять уже имеющиеся настройки. Конечно же, вы можете воспроизвести загруженный звук нажав большую клавишу "Play".

Выберите объект дверь щелчком ПКМ и переключитесь в Раздел Логики (F4). Добавьте для двери новый Актуатор и измените его тип на "Sound". Свяжите его с существующем Контроллером как показано на иллюстрации x-yA. Нажмите и удерживайте появившееся разворачивающееся меню в Актуаторе Sound, выберите в появившемся меню файл "DoorOpen.wav". И последний штрих до первой проверки, измените режим воспроизведения с "Play Stop" на "Play End", это предотвратит слишком быстрое окончание проигрывания файла.

image:LBsDoorSound.png

Таким же образом вы можете загрузить файл "bounce.wav" для тыквы. Только убедитесь что связываете Актуатор Sound с верным Контроллером, тем же, что связан с Актуатором "Always Jump". В таком случае каждый раз, как тыква будет касаться земли звуковой файл будет проигрываться.

Заключительное слово

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

Я расчитываю что вы освоили материал представленый в главе "Основы Blender", или хотя бы прочитали ее один раз и знаете что делать при появлении проблем. Так же, не пренебрегайте нашей помощью. Смотрите в разделе Приложение ссылки на форумы и on-line ресурсы по Blender.

Личные инструменты