В Scratch реально сделать 3Д игру, разбитую на несколько уровней или с небольшим отрытым миром. Быстро создать такую игру не получится, поэтому рекомендуем следить за каждой строчкой кода, чтобы проект оказался рабочим.
С чего начать
Продвинутые пользователи на основе Скретч создают трехмерные авиасимуляторы и клоны первых двух частей шутера Doom. Такие проекты тяжело освоить новичкам, поэтому начнем с основы в виде 3D лабиринта:
- Открываем новый проект. Сразу избавляемся от спрайта кота, щелкнув по пиктограмме корзины над ним.
- В правом нижнем углу наведите курсор на мордочку кота и в выпавшем меню выберите «Нарисовать».
- Выберите «Прямоугольник», щелкните по «Заливке» и тапните по красной линии в левом нижнем углу. Установите контур на отметке 25 и начертите прямоугольник на все игровое поле. Обязательно установите его по центру.
- Под сценой справа, укажите координаты «x» 0 и «y» тоже 0. В размере рекомендуем поставить 95.
- Теперь выберите «Линию» и случайным образом нанесите на игровое поле препятствия. Не ставьте их слишком близко друг к другу, чтобы персонаж в них не врезался. Можете использовать круг и прямоугольник, чтобы создать колонны. Все препятствия также должны быть с 25 контуром.
- Наведите курсор на мордочку котёнка и «Выберите спрайт». Переключитесь на «Люди» и выберите персонажа с видом сверху. Таких доступно 3: «Tatiana», «Taylor» и «Trisha».
- После появления на игровом поле уменьшите размер героя до «20». Переименуйте персонажа в «Главного героя». А созданную локацию в «Арену» или подобное.
На этом подготовка проекта заканчивается, переходим к самому интересному.
Перемещение персонажа
Переключитесь на спрайт главного героя и начинайте программирование:
- Из «События» добавьте «Когда флажок нажат», к нему из «Управление» прикрепите «Повторять всегда», а уже в него закрепите «Если -, то».
- Переместитесь в «Сенсоры». Здесь найдите «Клавиша пробел нажата» и добавьте этот сенсор в свободное поле «Если -, то». Поменяйте пробел на «Стрелка вправо», перейдите в «Движение» и прикрепите под стрелку «Повернуть на 15 градусов».
- Щелкните правой кнопкой по механизму поворота и выберите «Дублировать».
- Закрепите код ниже в рамках «Повторять всегда», но поменяйте «Если клавиша нажата» на «Стрелка влево», и замените «Повернуть направо на 15 градусов» на «Повернуть налево».
- Снова дублируйте способ перемещения. Установите, если «Клавиша стрелка вверх нажата» и вместо поворота добавьте «Идти 10 шагов», но лучше установить 5.
- Дублируйте перемещение, только теперь назначьте «Если клавиша стрелка вниз нажата» и установите значение «Идти -10 шагов» или минус то число, которое вы указали.
Теперь щелкните на флажок и с помощью стрелок попробуйте поуправлять персонажем. Обратите внимание, что все управление должно быть собрано внутри команды «Повторять всегда» и находиться друг под другом.
Взаимодействие с окружением
Чтобы персонаж не проходил через установленные препятствия:
- Под стрелки вперед и назад добавьте команды «Если -, то» из «Управления».
- В свободное поле из «Сенсоров» вложите «Касается» и укажите «Арена» или какое название вы выбрали для своей локации.
- Под каждым из сенсоров добавьте «Идти» и укажите противоположное количество шагов. То есть, если установлено 5 шагов, то пропишите -5 или наоборот. Это необходимо, чтобы персонаж остановился у преграды и не двигался дальше.
Повторяющиеся действия в программировании можно вынести в отдельный блок.
Луч для создания 3D объектов
Теперь нужно сделать так, чтобы персонаж мог распознавать объекты на игровом поле:
- Наведите курсор на мордочку кота в правом нижнем углу и выберите «Нарисовать».
- Уменьшите контур до «1», с помощью увеличительного стекла увеличьте поле для рисования и воспользовавшись «Прямоугольником» сделайте небольшую фигуру. Обязательно измените ей цвет с черного на любой другой. Контур и заливка должны быть одинаковых цветов.
Переименуйте созданный спрайт в «Луч» и переходите к кодированию:
- Начните с «Когда флажок нажат», снизу к нему прикрепите «Повторять всегда», внутрь команды добавьте «Перейти на Главный герой» или как вы назвали своего персонажа.
- Под эту команду прикрепите «Повернуть к направлению». Вместо числа необходимо добавить «Сенсор», который называется «фон от сцена». Только вместо «Сцена» установите «Главный герой». А вместо появившегося «Положение x», поставьте «направление».
- Теперь под «Повернуться в направлении» добавьте «Повторить пока не» и добавьте в свободное поле сенсор «Касается цвета» и укажите чёрный цвет. Внутрь команды поставьте «Идти 7 шагов» или другое число, но большее, чем движение персонажа.
Обратите внимание, чтобы цвет волос персонажа не был черным, иначе луч не будет двигаться вперед.
Теперь перейдите в «Добавить расширение», оно находится в самом низу, под всеми командами программирования и выберите «Перо». Что теперь:
- Переключитесь на спрайт лучика. Под «Когда флажок нажат» добавьте «установить для пера цвет». Щелкните по установленному цвету, тапните по пипетке и наведите искатель на луч. Когда тот попадет в объектив, щелкните левой кнопкой мышки.
- Еще ниже добавьте «Установить размер пера» и установите число, равное размеру луча – его можно посмотреть тапнув по спрайту луча и перейдя в «Костюмы».
- В «Повторять всегда» в самом начале добавьте из «Пера», «Стереть все».
- Следом добавьте «Опустить перо» перед тем, как он коснется цвета.
- Теперь завершаем код добавив «Поднять перо».
Луч начнет отбрасываться от персонажа к препятствиям. Чтобы не пришлось настраивать его заново, создайте блок:
- Зайдите в «Другие блоки» и выберите «Создать блок». Назовите его «Отрисовка луча» и поставьте галочку «Запустить без обновления экрана»
- Прикрепите к нему весь код, который начинается с «Перейти на Главный герой».
- С «Других блоков» достаньте «Отрисовка луча» и добавьте его в «Повторять всегда» под «Стереть все».
Луч будет всегда исходить от игрока прямиком до ближайших препятствий.
Создание угла обзора
Луч позволит видеть только ту часть, куда он попадет. Нужно исправить эту проблему:
- Зайдите в спрайт луча, из «События» достаньте «Когда я получу» и переименуйте «Сообщение 1» на «Отрисовка луча».
- Прикрепите к этому сообщению весь код, собранный под «Когда флажок нажат».
- Теперь переключитесь на спрайт персонажа и в самый конец кода, но в рамках «Повторять всегда» добавьте «Передать отрисовка луча» из «События».
- Вернитесь к спрайту луча и через «Другие блоки» снова «Создайте блок» с названием «Угол обзора», также поставьте отметку «Запустить без обновления экрана».
- К нему добавьте «Повторить 10 раз» из «Управления», только количество поменяйте на 90.
- Теперь внимательно – из сообщения «Когда я получу» переместите созданный блок «Отрисовка луча» внутрь «Повторить 90 раз» в блок «Угол обзора». А на его место поместите новый блок «Угол обзора».
- В «Угол обзора» под «Отрисовка луча» нужно добавить «Повернуть на 15 градусов вправо» и сразу поменяйте его на 1.
- Снова внимательно в спрайте луча, из блока «Отрисовка луча» достаньте «Повернуться в направлении» и перенесите его в самое начало «Когда получу».
Теперь у персонажа будет угол обзора 90 градусов. Его можно изменить, регулируя количество в «Повторить xx раз».
Создание 3D окружения
Подходим к главному:
- Переключитесь на спрайт фонарика и создайте переменную под названием «x», отметьте, что она «Только для этого спрайта». В самое начало блока «Угол обзора» добавьте переменную «Задать – значение». В место – установите x, а в значении пропишите -240.
- В этом же блоке, в самый низ под «Повернуть вправо на 1 градус» добавьте «Изменить x на». Вместо отмеченной там цифры добавьте «Оператор» разделить одно число на другое. В первое окошко пропишите 480, а во второе установленный угол обзора, в нашем случае это 90.
- Теперь переходим к блоку «Отрисовка луча». Для него создаем переменную с названием «Расстояние до преграды» и также укажите «Только для этого спрайта».
- Берем «Задать расстояние до преграды» и устанавливаем его над «Поднять перо».
- Заходим в «Сенсоры» и выносим с них «Расстояние до» и устанавливаем его вместо значения в «Задать расстояние до преграды». Меняем с «Расстояния до указателя мышки» на «Главный герой».
- Создаем еще одну переменную «Только для этого спрайта» и называем ее «Высота преграды». Переносим «Задать высота преграды» и крепим ее под «Задать расстояние до преграды». В значение нужно добавить «Оператор» и в первом окошке указать 4000 разделить на переменную «Расстояние до преграды». Чтобы добавить переменную, достаточно зайти в соответствующий раздел и перетянуть ее во второе окошко.
- Достаньте «Опустить перо» из начала блока и опустите его в самый низ, предварительно отодвинув в сторону «Поднять перо».
- Над опустить перо добавьте «Перейти в x: y:» из «Движения». В значение x установите переменную с названием «x», а в значение y добавьте переменную «Высота преграды».
- Чуть ниже снова добавьте «Перейти в x: y:». В x снова добавьте переменную «x», а вот на место y нужно вынести «Оператор» число минус число. Первое окошко оставить пустым, а во второе добавить переменную «Высота преграды».
Если включить игру, перед персонажем появится трехмерное окружение. Как дальше развивать проект, решать только пользователю. Рекомендуем обязательно сохранить полученный результат, если игра создается онлайн, а не в десктопной версии программы.