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

Roblox Studio — отличный движок для создания первых 3D-игр. Здесь дети от 9-10 лет могут научиться моделировать объекты и программировать на несложном языке Lua. В процессе можно научиться создавать как небольшие игры, так и полноценные проекты с множеством разных функций.

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

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

Первый вариант разрушаемого блока

Разрушаемые платформы добавят много динамики в вашу карту в Роблокс, давайте рассмотрим разные способы их создания. 

Самый простой способ построить разрушаемый объект — воспользоваться методом :Destroy(). Для этого создадим блок на карте и добавим к нему скрипт:

Создание объекта на карте
Создание объекта на карте
Добавление скрипта объекту
Добавление скрипта объекту

Далее напишем следующий скрипт:

Скрипт для разрушения
Скрипт для разрушения

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

Разберемся в коде разрушения в Роблокс:

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

Функция onTouched(hit) вызывается, когда игрок касается блока. Если игрок имеет объект Humanoid в родительском элементе, то объект получает свойство Anchored = false, что позволяет ему двигаться. Затем определяются параметры анимации, включая длительность, стиль и направление, конечную позицию модели после анимации. И создается анимация tween

  • Enum.EasingStyle.Linear — стиль анимации. В данном случае используется линейный стиль анимации, который означает, что наш элемент будет перемещаться с постоянной скоростью.

  • Enum.EasingDirection.InOut — направление анимации. В нашем случае используется InOut, это означает, что блок будет двигаться в противоположных направлениях при воспроизведении анимации, перемещаясь вверх и затем вниз.

После того как анимация создана, tween:Play() воспроизводит ее.

Функция wait(1) ждет одну секунду, чтобы анимация закончилась, а затем уничтожает блок, используя метод block:Destroy().

Наконец, block.Touched:Connect(onTouched) соединяет функцию onTouched() с событием прикосновения к блоку, чтобы она вызывалась при каждом касании игрока.

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

Второй вариант разрушаемого блока

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

Создадим Part на карте и добавим ему скрипт:

Создание второго объекта
Создание второго объекта
Добавление скрипта
Добавление скрипта

Далее напишем следующий скрипт:

Код для разрушения
Код для разрушения

Объясняем скрипт на разрушение в Roblox: 

В начале кода определяется объект block, который является родительским объектом скрипта, то есть самим блоком.

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

Далее скрипт проверяет, является ли hit объектом, содержащим Humanoid, используя метод FindFirstChildOfClass. Если hit содержит Humanoid, то выполняется действие разрушения блока и создания обломков.

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

Затем происходит цикл, который повторяется 10 раз и создает 10 новых обломков. Для каждого блока создается новый объект CornerWedgePart со случайно определенными свойствами размера, поворота, цвета и материала. Каждый элемент помещается в случайное место вокруг оригинального блока, используя свойство CFrame. CFrame — это координатная система, которая хранит информацию о положении и ориентации объекта в 3D-пространстве, с ее помощью мы можем задать положение относительно координат основного блока, добавив случайное смещение.

В конце скрипт удаляет оригинальный блок с помощью метода Destroy.

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

Обложки после уничтожения куба
Обложки после уничтожения куба

Данный скрипт отлично работает и на MeshPart:

Видео: создание разрушения в Roblox Studio


В Roblox Studio можно создавать игры в различных жанрах: раннеры, хорроры, РПГ, различные симуляторы и т. д. Если вы хотите углубиться в разработку игр на этом движке, научиться создавать как отдельные функции и детали (анимацию, телепорт, NPC, магазин, инвентарь и многое другое), так и полноценные проекты, в которые смогут играть пользователи со всего мира, то смотрите циклы наших бесплатных уроков на Rutube-канале

А если вы хотите пройти обучение Roblox под руководством преподавателя, заглядывайте на онлайн-курсы по моделированию и программированию от школы Pixel.

Комментарии (1)


  1. Sasa111222333
    01.10.2024 21:26
    +1

    а у вас точно зубкова пишет статьи? простите, но то вроде все понятно, то вроде будто нейросеть наляпала какого-то "цветка". урок не о чем и не про что просто ради букв