ВЕРСИЯ ДЛЯ СЛАБОВИДЯЩИХ
Блог онлайн школы Пиксель

Как сделать ритм игру в Roblox

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

Создание счета игрока

По статистике, чаще всего в Роблокс играют школьники, а какой подросток не любит соревнования, да еще и в танцах? Давайте создадим счет игрока (баллы, накапливаются в процессе игры), для этого в папке ServerScriptService создаем скрипт и называем его scores:
Программирование в Roblox
  1. Для начала установим прослушивание события PlayerAdded, которое срабатывает при подключении нового человека к игре. После того как будет выполнено условие, функция, указанная после function(player), будет активирована, и переменная игрока будет передан в качестве аргумента player. game. Players.PlayerAdded:Connect(function(player)
  2. Следующим шагом создаем новый экземпляр класса Folder, который представляет собой папку. Она будет использоваться для хранения статистических данных пользователя. local leaderstats = Instance.new('Folder')
  3. Затем устанавливается имя проводника leaderstats, которое будет отображаться в иерархии. leaderstats.Name = 'leaderstats'
  4. Далее устанавливаем родительский объект player для папки leaderstats. Таким образом, она будет являться дочерним элементом в иерархии игровых процессов. leaderstats.Parent = player
  5. После этого создадим новый экземпляр класса IntValue, который представляет собой целочисленное значение. Он будет использоваться для хранения счета геймера. local score = Instance.new('IntValue')
  6. Устанавливаем имя значения score, которое будет отображаться в иерархии. score.Name = 'score'
  7. Устанавливаем начальную величину счета игрока равное 0. score.Value = 0
  8. И последним шагом обозначаем родительский элемент leaderstats для значения score. Таким образом, значение score будет являться дочерней переменной папки leaderstats в иерархии. score.Parent = leaderstats
Этот скрипт выполняет следующие действия для каждого нового игрока, который присоединяется к игре:
  1. создает папку leaderstats;
  2. создает значение score внутри папки leaderstats и устанавливает начальную величину счета пользователя равным 0.
Отлично, мы с вами установили счетчик для сбора наших очков. Давайте теперь двигаться дальше.

Создание движения персонажа

Теперь в workspace нужно создать папку (folder) для наших анимаций движений персонажа. Назовем, например, dance.
Танец персонажа в Roblox
Отлично, теперь в эту папку нужно добавить объект типа Animation, а в названии указать его номер, чтобы далее не запутаться, так как у нас может быть много элементов. В Роблокс для подростков, которые уже программировали, здесь не будет ничего сложного.
Анимация персонажа в Roblox
Теперь нам нужно создать движение одного из персонажей. Для этого заходим во вкладку avatar и выбираем инструмент rig builder, с помощью него мы создадим экземпляр нашего персонажа, на котором и будем делать оживление героя.
Далее открываем окно animation editor и создаем анимацию для персонажа:
  1. Указываем название для вашей мультипликации и нажимаем на кнопку create
  2. Далее в окне Animation последовательно создаем ключевые точки вашего движения, смещая указатель по временной линии. Ключевые точки также можно копировать сочетанием клавиш control+c, и растягивать их диапазон, выделив несколько точек и растянув за край выделения.
  3. После создания анимации нужно нажать на 3 точки у ее имени и опубликовать, обязательно скопировав ID.
Данный ID мы вставим в поле animationID.

Создание кнопки движения

В папке StarterGUI создадим SceerGUI и imageButton. На нем разместим кнопку и добавим на нее скрипт, который назовем playAnim, давайте по шагам рассмотрим, как это можно сделать:
Программирование движения в ритм игре в Roblox
Программирование в Roblox для детей
  1. Создаем локальную переменную button, которая будет ссылаться на родительский элемент скрипта. Это предполагает, что скрипт находится внутри кнопки. local button = script.Parent
  2. Добавляем еще одно локальное значение PlayerName, которое будет получать имя игрока, предполагая, что кнопка находится в иерархии. С помощью цепочки .Parent четыре раза, мы получаем имя родительского объекта кнопки, который является предметом геймера. local PlayerName = script.Parent.Parent.Parent.Parent.Name
  3. Далее точно также с timeout, которая устанавливается в true. Эта переменная будет использоваться для управления задержкой между выполнением действий. local timeout = true
  4. Теперь нам нужно добавить строку, которая устанавливает прослушивание события MouseButton1Click кнопки. Когда событие происходит (кнопка нажимается), функция, указанная после function(), будет выполнена. button.MouseButton1Click:Connect(function()
  5. Вводим оператора условия, который проверяет величину переменной timeout. Если timeout равно true, то код внутри блока условия будет выполнен. if timeout then
  6. Затем присваивается значение false переменной timeout, чтобы предотвратить повторное выполнение кода до завершения текущей операции. timeout = false
  7. Создается локальная переменная character, которая ссылается на персонажа (Character), используя имя из переменной PlayerName. local character = game.Players[PlayerName].Character
  8. Создается локальная переменная score, которую получает элемент значения счета пользователя (score), предполагая, что игрок имеет папку leaderstats, и внутри нее есть значение с именем score. local score = game.Players[PlayerName]:WaitForChild('leaderstats'):FindFirstChild('score')
  9. Увеличиваем величину счета игрока на 10. score.Value += 10
  10. Добавляем оператора условия, который проверяет, существует ли персонаж. Если он существует, то код внутри блока условия будет выполнен. if character then
  11. Создается локальная переменная humanoid, которая ссылается на Humanoid персонажа. local humanoid = character:WaitForChild('Humanoid')
  12. Вводится показатель animation, который ссылается на (Animation1) в пространстве игры (workspace). local animation = workspace.dance.Animation1
  13. Создаем еще одну переменную loadedAnim, которая загружает анимацию (animation) для объекта Humanoid персонажа. local loadedAnim = humanoid:LoadAnimation(animation)
  14. Запускается воспроизведение загруженной анимации. То есть, мультипликация начинает воспроизводиться на персонаже. loadedAnim:Play()
  15. Скрипт ждет 2 секунды, чтобы позволить действию проиграться на персонаже. В это время код приостанавливается. wait(2)
  16. По истечении 2 секунд присваивается значение true переменной timeout. Это позволяет повторное выполнение кода при следующем нажатии на кнопку. timeout = true
Далее аналогично создаем еще две анимации и две кнопки для их проигрывания, не забываем изменять скрипт у кнопок, указывая другой код мультипликации в нем.

Создание движений второго уровня

Мы всегда стремимся создавать интересные игры. Поэтому давайте разберем, как создавать движения второго уровня в Roblox для детей.
На карте дети должны открываться все новые движения по достижению определенного количества очков, для этого создадим кнопку второго уровня, сделаем у нее другой цвет и более интересное движение, а также добавим на кнопку второй скрипт, который назовем scoreBlock:
  1. Установим видимость (присутствие или отсутствие на экране) родительского элемента скрипта в значение false. Предполагается, что скрипт находится внутри объекта, который не должен быть видимым изначально. script.Parent.Visible = false
  2. Далее создадим локальную переменную PlayerName, которая получает имя человека. С помощью цепочки .Parent четыре раза мы получаем имя родительского скрипта, который является переменной игрока. local PlayerName = script.Parent.Parent.Parent.Parent.Name
  3. Затем внесем цикл while, который будет выполняться бесконечно, пока его мы не прервем с помощью оператора break. while true do
  4. Включим скрипт, который приостанавливает свое выполнение на 0.5 секунды, прежде чем продолжить следующую итерацию цикла while. wait(0.5)
  5. Добавим оператора условия, который проверяет величину счета игрока (score), если вес счета больше 100. if game.Players[PlayerName]:WaitForChild('leaderstats'):FindFirstChild('score').Value > 100 then
  6. Если вес счета аккаунта больше 100, то видимость родительского скрипта устанавливается в значение true. То есть, объект становится видимым. script.Parent.Visible = true
  7. Оператор break прерывает выполнение цикла while. Таким образом, скрипт перестает выполняться после того, как условие в пункте 5 станет истинным. break
Теперь наша кнопка появляется в нашем интерфейсе, однако только если мы достигнем определенного количества очков, таким образом, у нас в условии нужное количество очков и мы можем создать несколько уровней анимации для нашего персонажа, которые он должен достичь, зарабатывая очки.
Также у кнопки второго уровня в скрипте анимации следует повысить количество бонусных очков и увеличить время нужное для проигрывания движения.

Включение музыки

Заключительным этапом создания нашей ритм игры в Roblox сделаем кнопку включения музыки, поставим парт на цилиндр и на него добавим клик-детектор и скрипт. Давайте по шагам рассмотрим, как правильно это делается:
  1. Создаем локальную переменную soundid, которая содержит строку, представляющую идентификатор звука (SoundId). В данном случае, мы возьмем ID музыки из toolbox. local soundid = 'rbxassetid://1839074560'
  2. Вводим строку, которая устанавливает прослушивание события MouseClick для ClickDetector, находившийся в родительском скрипте. Когда событие происходит ( щелчок мыши на предмете с ClickDetector), функция, указанная после function(), будет выполнена. script.Parent.ClickDetector.MouseClick:Connect(function()
  3. Подключаем переменную sound, которая является новым экземпляром Sound, будет представлять звук в игре. local sound = Instance.new('Sound')
  4. Звуковому объекту sound присваивается функция идентификатора звука (SoundId). Здесь используется soundid, которое мы определили в начале скрипта. sound.SoundId = soundid
  5. После всех этих шагов присвоим родительский объект для звукового sound. В данном случае, он будет помещен в рабочее пространство (Workspace) игры. sound.Parent = game.Workspace
  6. Через sound запускаем воспроизведение звука. То есть, звук будет проигрываться в игре после выполнения этой строки. sound:Play()
Отлично, мы с вами сделали нашу ритм игру в Roblox. Само создание ритм-игры для детей в Roblox представляет собой захватывающий и творческий процесс, который открывает перед разработчиками множество возможностей для проявления своего таланта. Так как здесь у вас нет ограничений в полете мысли, каждый из вас может самостоятельно придумать и запрограммировать с нуля свою собственную игру.
Полное видео по сегодняшнему нашему уроку можно посмотреть здесь, а также все бесплатные Roblox курсы для детей есть на нашем YouTube-канале.
С помощью доступных инструментов и творческого подхода мы с вами можем с легкостью создать увлекательные ритм-игры, которые будут радовать не только нас, но и других людей, а также поддерживать интерес к этому жанру в мире Roblox. Все это делает процесс создания ритм-игр в Roblox захватывающим и вдохновляющим для всех, кто стремится внести свой вклад в увлекательный мир игровой индустрии.
Roblox для детей