Code Every Day 🚀
30 subscribers
687 photos
243 videos
22 files
174 links
Просто для развлечения
Download Telegram
Roblox: Рефакторим код скрипта светофора

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

👉 Заменим логику установки материала для BasePart на лаконичные функции
- lightOn() - включает лампочку
- lightOff() - выключает лампочку

👉 Добавим функции:
- lightOnRed() - выполняет lightOff() для зеленой и желтой лампочек и lightOn() для красной
- lightOnYellow()
- lightOnGreen()

👉 Напишем функцию смены состояния changeState(), при смене значения переменной будет автоматически меняться подсветка светофора в игровом мире

👉 Код стал более читаемым. Пример кода приведен на скриншотах для наглядности.

#Roblox
This media is not supported in your browser
VIEW IN TELEGRAM
🔥Коротуля🔥

👉 Видео прикладываю здесь, так как почему-то по ссылке для тиктока не открывается (ну, у меня во всяком случае)

👉 TikTok https://vm.tiktok.com/ZIJWREk2B
This media is not supported in your browser
VIEW IN TELEGRAM
Roblox: Опорная точка

🎯 Ранее мы уже неоднократно писали код, который вращал объект относительного его середины. Иногда нужно вращать объект относительно начала или конца (ну, или любой другой опорной точки). Сегодня разбирался, как это можно сделать.

👉 У BasePart есть свойств Pivot , которое указывает центр масс или опорную точку.
👉 Чтобы получить текущую опорную точку, можно воспользоваться функцией BasePart:GetPivot()
👉 Чтобы задать новую точку, можно вызвать BasePart:PivotTo()

👉 В игровой мир добавил две балки размерами size = 20,1,1 .
У одной в инспекторе свойств задал pivot на левый край, то есть pivot = 10,0,0
Это заметно на скриншотах.

👉 Далее написал код, который поворачивает балки относительно опорной точки.

👉 Пример на демо
#Roblox
👍1
👉 Код и объекты игрового мира представлены на скриншотах для наглядности
Media is too big
VIEW IN TELEGRAM
Roblox: Делаем облако

🎯 Сегодня разбирался, как можно сделать облако.

👉 В игровой мир добавляем block , делаем его не видимым Transparency = 1 , фиксируем блок Anchored = false и делаем невозможность с ним взаимодействовать canColide = false.
👉 Для этого блока добавляем объект Smoke, можно поменять его параметры, размер, скорость и прочие, чтобы облако дыма было похоже на обычное облако.
👉 Добавляем Script , в котором пропишем логику перемещения облака в случайных направлениях по осям X,Z , Y не будем менять, чтобы облако не улетало вверх.


👉 Пример на демо
#Roblox
CodeEveryDay-Cloud-Fly-Script.lua
745 B
👉 Код в виде файла для удобства
👉 Код в виде скриншотов для наглядности
Media is too big
VIEW IN TELEGRAM
Roblox: Делаем шлагбаум

🎯 Сегодня разбирался, как можно сделать шлагбаум. Недавно разбирал тему опорных точек Pivot. Сегодня их будем использовать.

👉 В игровом мире из примитивов Cylinder собираем по кусочкам балку, раскрашиваем ее в разные цвета (красный и белый). Все кусочки соединены друг с другом с помощью сварки Weld. Балку фиксируем в пространставе, делая у первого цилиндра Anchored = false

👉 Основание балки переименовываем в BasePart, опорную точку этого цилиндра смещаем в начало цилиндра.

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


👉 Пример на демо
#Roblox
👍1
👉 Для наглядности код на скриншотах
Roblox: Делаем шлагбаум: Улучшаем код открытия и закрытия

🎯 В прошлом прототипе для шлагбаума были разработаны две функции open() и close() . Код в них был сильно похож и имел один недостаток, решил сегодня этот момент подправить.

👉 Добавлен один метод, который поворачивает шлагбаум до нужного положения, его теперь можно использовать для открытия или закрытия, можно приоткрывать, то есть поворачивать шлагбаум не на 90 градусов. Работать с ним удобнее.
-- Поворот шлагбаума из текущего исходного положения по оси Y
-- до значения to c шагом step и задержкой отрисовки delayAnimation
-- и корректировкой окончательного положения (доворт до max)
local function barrirMoving(
to: number,
step: number,
delayAnimation: number,
max: number
)


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

👉 Для теста добавим новую функцию, в которой будем со случайной скоростью открывать и закрывать шлагбаум
-- открытие
barrirMoving(-90, math.random(-20, -1), 0.0001, -90)
wait(1)

-- закрытие
barrirMoving(90, math.random(1, 20), 0.0001, 90)
wait(1)

👉 Пример на демо
#Roblox
👉 Код для наглядности в виде скриншотов
👍1