Многие часто задаются вопросом: «Как сделать игру в Роблокс?» или «Как создать игру в Роблокс Студио?» Мы продолжаем наше путешествие по миру программирования в Roblox для детей. Сегодня мы рассмотрим Roblox создание ритм-игры. В ней мы будем управлять персонажем и двигаться под музыку, зарабатывая очки, и по достижению определенного количества нам будут открываться новые движения. Интересно? Тогда давайте начнем.
Для организации танцевального настроения в этой игре для детей Roblox, предлагаем вам украсить карту. Мы, например, добавим атмосферу ночного города. Все программирование игры происходит в Roblox Studio.
![Карта в Roblox Studio](https://static.tildacdn.com/tild3763-6338-4630-b133-663539346139/1.png)
Создание счета игрока
По статистике, чаще всего в Роблокс играют школьники, а какой подросток не любит соревнования, да еще и в танцах? Давайте создадим счет игрока (баллы, накапливаются в процессе игры), для этого в папке ServerScriptService создаем скрипт и называем его scores:
![Программирование в Roblox](https://static.tildacdn.com/tild3563-6664-4363-a636-366636383630/2.png)
- Для начала установим прослушивание события PlayerAdded, которое срабатывает при подключении нового человека к игре. После того как будет выполнено условие, функция, указанная после function(player), будет активирована, и переменная игрока будет передан в качестве аргумента player. game. Players.PlayerAdded:Connect(function(player)
- Следующим шагом создаем новый экземпляр класса Folder, который представляет собой папку. Она будет использоваться для хранения статистических данных пользователя. local leaderstats = Instance.new('Folder')
- Затем устанавливается имя проводника leaderstats, которое будет отображаться в иерархии. leaderstats.Name = 'leaderstats'
- Далее устанавливаем родительский объект player для папки leaderstats. Таким образом, она будет являться дочерним элементом в иерархии игровых процессов. leaderstats.Parent = player
- После этого создадим новый экземпляр класса IntValue, который представляет собой целочисленное значение. Он будет использоваться для хранения счета геймера. local score = Instance.new('IntValue')
- Устанавливаем имя значения score, которое будет отображаться в иерархии. score.Name = 'score'
- Устанавливаем начальную величину счета игрока равное 0. score.Value = 0
- И последним шагом обозначаем родительский элемент leaderstats для значения score. Таким образом, значение score будет являться дочерней переменной папки leaderstats в иерархии. score.Parent = leaderstats
Этот скрипт выполняет следующие действия для каждого нового игрока, который присоединяется к игре:
- создает папку leaderstats;
- создает значение score внутри папки leaderstats и устанавливает начальную величину счета пользователя равным 0.
Отлично, мы с вами установили счетчик для сбора наших очков. Давайте теперь двигаться дальше.
Создание движения персонажа
Теперь в workspace нужно создать папку (folder) для наших анимаций движений персонажа. Назовем, например, dance.
![Танец персонажа в Roblox](https://static.tildacdn.com/tild3739-3337-4531-b434-626366333861/3.png)
Отлично, теперь в эту папку нужно добавить объект типа Animation, а в названии указать его номер, чтобы далее не запутаться, так как у нас может быть много элементов. В Роблокс для подростков, которые уже программировали, здесь не будет ничего сложного.
![Анимация персонажа в Roblox](https://static.tildacdn.com/tild3861-3830-4761-b133-616434353637/4.png)
Теперь нам нужно создать движение одного из персонажей. Для этого заходим во вкладку avatar и выбираем инструмент rig builder, с помощью него мы создадим экземпляр нашего персонажа, на котором и будем делать оживление героя.
Далее открываем окно animation editor и создаем анимацию для персонажа:
- Указываем название для вашей мультипликации и нажимаем на кнопку create
- Далее в окне Animation последовательно создаем ключевые точки вашего движения, смещая указатель по временной линии. Ключевые точки также можно копировать сочетанием клавиш control+c, и растягивать их диапазон, выделив несколько точек и растянув за край выделения.
- После создания анимации нужно нажать на 3 точки у ее имени и опубликовать, обязательно скопировав ID.
Данный ID мы вставим в поле animationID.
Создание кнопки движения
В папке StarterGUI создадим SceerGUI и imageButton. На нем разместим кнопку и добавим на нее скрипт, который назовем playAnim, давайте по шагам рассмотрим, как это можно сделать:
![Программирование движения в ритм игре в Roblox](https://static.tildacdn.com/tild6334-3661-4430-b136-316635636563/6.png)
![Программирование в Roblox для детей](https://static.tildacdn.com/tild6436-3164-4038-b764-393933353833/7.png)
- Создаем локальную переменную button, которая будет ссылаться на родительский элемент скрипта. Это предполагает, что скрипт находится внутри кнопки. local button = script.Parent
- Добавляем еще одно локальное значение PlayerName, которое будет получать имя игрока, предполагая, что кнопка находится в иерархии. С помощью цепочки .Parent четыре раза, мы получаем имя родительского объекта кнопки, который является предметом геймера. local PlayerName = script.Parent.Parent.Parent.Parent.Name
- Далее точно также с timeout, которая устанавливается в true. Эта переменная будет использоваться для управления задержкой между выполнением действий. local timeout = true
- Теперь нам нужно добавить строку, которая устанавливает прослушивание события MouseButton1Click кнопки. Когда событие происходит (кнопка нажимается), функция, указанная после function(), будет выполнена. button.MouseButton1Click:Connect(function()
- Вводим оператора условия, который проверяет величину переменной timeout. Если timeout равно true, то код внутри блока условия будет выполнен. if timeout then
- Затем присваивается значение false переменной timeout, чтобы предотвратить повторное выполнение кода до завершения текущей операции. timeout = false
- Создается локальная переменная character, которая ссылается на персонажа (Character), используя имя из переменной PlayerName. local character = game.Players[PlayerName].Character
- Создается локальная переменная score, которую получает элемент значения счета пользователя (score), предполагая, что игрок имеет папку leaderstats, и внутри нее есть значение с именем score. local score = game.Players[PlayerName]:WaitForChild('leaderstats'):FindFirstChild('score')
- Увеличиваем величину счета игрока на 10. score.Value += 10
- Добавляем оператора условия, который проверяет, существует ли персонаж. Если он существует, то код внутри блока условия будет выполнен. if character then
- Создается локальная переменная humanoid, которая ссылается на Humanoid персонажа. local humanoid = character:WaitForChild('Humanoid')
- Вводится показатель animation, который ссылается на (Animation1) в пространстве игры (workspace). local animation = workspace.dance.Animation1
- Создаем еще одну переменную loadedAnim, которая загружает анимацию (animation) для объекта Humanoid персонажа. local loadedAnim = humanoid:LoadAnimation(animation)
- Запускается воспроизведение загруженной анимации. То есть, мультипликация начинает воспроизводиться на персонаже. loadedAnim:Play()
- Скрипт ждет 2 секунды, чтобы позволить действию проиграться на персонаже. В это время код приостанавливается. wait(2)
- По истечении 2 секунд присваивается значение true переменной timeout. Это позволяет повторное выполнение кода при следующем нажатии на кнопку. timeout = true
Далее аналогично создаем еще две анимации и две кнопки для их проигрывания, не забываем изменять скрипт у кнопок, указывая другой код мультипликации в нем.
![](https://static.tildacdn.com/tild6361-3661-4865-a361-396238376133/8.png)
![](https://static.tildacdn.com/tild6434-6563-4564-b130-656530303164/9.png)
Создание движений второго уровня
Мы всегда стремимся создавать интересные игры. Поэтому давайте разберем, как создавать движения второго уровня в Roblox для детей.
На карте дети должны открываться все новые движения по достижению определенного количества очков, для этого создадим кнопку второго уровня, сделаем у нее другой цвет и более интересное движение, а также добавим на кнопку второй скрипт, который назовем scoreBlock:
![](https://static.tildacdn.com/tild3362-3464-4463-a164-303864353538/10.png)
![](https://static.tildacdn.com/tild3162-6532-4063-b831-323239666566/11.png)
![](https://static.tildacdn.com/tild3132-6234-4132-a535-643466336436/12.png)
- Установим видимость (присутствие или отсутствие на экране) родительского элемента скрипта в значение false. Предполагается, что скрипт находится внутри объекта, который не должен быть видимым изначально. script.Parent.Visible = false
- Далее создадим локальную переменную PlayerName, которая получает имя человека. С помощью цепочки .Parent четыре раза мы получаем имя родительского скрипта, который является переменной игрока. local PlayerName = script.Parent.Parent.Parent.Parent.Name
- Затем внесем цикл while, который будет выполняться бесконечно, пока его мы не прервем с помощью оператора break. while true do
- Включим скрипт, который приостанавливает свое выполнение на 0.5 секунды, прежде чем продолжить следующую итерацию цикла while. wait(0.5)
- Добавим оператора условия, который проверяет величину счета игрока (score), если вес счета больше 100. if game.Players[PlayerName]:WaitForChild('leaderstats'):FindFirstChild('score').Value > 100 then
- Если вес счета аккаунта больше 100, то видимость родительского скрипта устанавливается в значение true. То есть, объект становится видимым. script.Parent.Visible = true
- Оператор break прерывает выполнение цикла while. Таким образом, скрипт перестает выполняться после того, как условие в пункте 5 станет истинным. break
Теперь наша кнопка появляется в нашем интерфейсе, однако только если мы достигнем определенного количества очков, таким образом, у нас в условии нужное количество очков и мы можем создать несколько уровней анимации для нашего персонажа, которые он должен достичь, зарабатывая очки.
Также у кнопки второго уровня в скрипте анимации следует повысить количество бонусных очков и увеличить время нужное для проигрывания движения.
Включение музыки
Заключительным этапом создания нашей ритм игры в Roblox сделаем кнопку включения музыки, поставим парт на цилиндр и на него добавим клик-детектор и скрипт. Давайте по шагам рассмотрим, как правильно это делается:
![](https://static.tildacdn.com/tild3433-6666-4564-a536-323365356137/13.png)
![](https://static.tildacdn.com/tild3863-6562-4666-b733-363639643033/14.png)
- Создаем локальную переменную soundid, которая содержит строку, представляющую идентификатор звука (SoundId). В данном случае, мы возьмем ID музыки из toolbox. local soundid = 'rbxassetid://1839074560'
- Вводим строку, которая устанавливает прослушивание события MouseClick для ClickDetector, находившийся в родительском скрипте. Когда событие происходит ( щелчок мыши на предмете с ClickDetector), функция, указанная после function(), будет выполнена. script.Parent.ClickDetector.MouseClick:Connect(function()
- Подключаем переменную sound, которая является новым экземпляром Sound, будет представлять звук в игре. local sound = Instance.new('Sound')
- Звуковому объекту sound присваивается функция идентификатора звука (SoundId). Здесь используется soundid, которое мы определили в начале скрипта. sound.SoundId = soundid
- После всех этих шагов присвоим родительский объект для звукового sound. В данном случае, он будет помещен в рабочее пространство (Workspace) игры. sound.Parent = game.Workspace
- Через sound запускаем воспроизведение звука. То есть, звук будет проигрываться в игре после выполнения этой строки. sound:Play()
Отлично, мы с вами сделали нашу ритм игру в Roblox. Само создание ритм-игры для детей в Roblox представляет собой захватывающий и творческий процесс, который открывает перед разработчиками множество возможностей для проявления своего таланта. Так как здесь у вас нет ограничений в полете мысли, каждый из вас может самостоятельно придумать и запрограммировать с нуля свою собственную игру.
Полное видео по сегодняшнему нашему уроку можно посмотреть здесь, а также все бесплатные Roblox курсы для детей есть на нашем YouTube-канале.
С помощью доступных инструментов и творческого подхода мы с вами можем с легкостью создать увлекательные ритм-игры, которые будут радовать не только нас, но и других людей, а также поддерживать интерес к этому жанру в мире Roblox. Все это делает процесс создания ритм-игр в Roblox захватывающим и вдохновляющим для всех, кто стремится внести свой вклад в увлекательный мир игровой индустрии.