Більшість того, що діти намагаються зробити кодом у Roblox Studio, насправді робиться однією галочкою в панелі властивостей. Деталь провалюється крізь підлогу, платформа не тримає гравця, скло поводиться як стіна — усе це не помилки скрипта, а налаштування самої деталі.
Властивостей у деталі близько сотні, і більшість з них не знадобляться ніколи. Нижче — ті п'ятнадцять, які справді використовуються, з поясненням, що кожна робить, і розбором чотирьох ситуацій, де вони підводять найчастіше.
Де їх узагалі видно
Панель властивостей відкривається у вкладці View, пункт Properties. Поруч зазвичай тримають Explorer — дерево всіх об'єктів сцени. Виділили деталь у дереві чи мишкою на сцені — праворуч з'явився її повний список налаштувань, згрупований за розділами.
Якщо панель зникла, це не поломка проєкту: вікна в Studio закриваються хрестиком і повертаються з того самого меню. На заняттях перший тиждень половина питань — саме про зниклі панелі.
Фізика: дві головні галочки
| Властивість | Що робить | Коли міняють |
|---|---|---|
Anchored | закріплює деталь у повітрі | вмикати майже завжди |
CanCollide | чи можна наштовхнутися | вимикати для декору |
CanTouch | чи спрацьовує дотик | вимикати, щоб не ловити зайве |
Massless | не додає ваги до моделі | для дрібних деталей на механізмах |
Locked | захищає від випадкового виділення | для підлоги й стін |
Anchored — найважливіша властивість у всій грі, і саме її забувають. Нова деталь створюється незакріпленою, тобто підпорядкованою фізиці: вона падає, її штовхає гравець, вона з'їжджає з місця. Будинок, зібраний без цієї галочки, складається на очах через секунду після запуску. Правило просте: усе, що має стояти нерухомо, закріплюється одразу, а не коли розсипалося.
CanCollide відповідає за твердість. Вимкніть її — і крізь деталь можна буде пройти наскрізь, хоча виглядати вона буде так само. Потрібно це постійно: трава, яка не має заважати ходити, декоративні гілки, зони входу, невидимі межі навпаки. Важливо, що ця властивість нічого не робить з виглядом, а прозорість нічого не робить з твердістю — це різні речі, і плутають їх постійно.
Вигляд
| Властивість | Що робить |
|---|---|
Transparency | від 0 (щільна) до 1 (невидима) |
Color | колір точним значенням |
BrickColor | колір із готової палітри |
Material | матеріал: дерево, метал, скло, неон |
Reflectance | наскільки деталь відбиває оточення |
CastShadow | чи відкидає тінь |
Два кольори в списку — це один і той самий колір, записаний по-різному. BrickColor — палітра з іменами на кшталт Bright red, зручна для швидкого вибору. Color — точне значення, потрібне, коли колір задає скрипт або коли треба влучити в конкретний відтінок. Змінили одне — друге оновилося само.
Окремо варто сказати про матеріал Neon. Він ігнорує освітлення сцени й світиться власним кольором, тому на ньому роблять лампи, кнопки, підсвічені доріжки. Для дитини це найпомітніший візуальний ефект, доступний одним кліком, і перший проєкт зазвичай одразу обростає неоном у всіх місцях.
Розмір і місце
| Властивість | Що задає |
|---|---|
Size | розміри по трьох осях |
Position | координати центру деталі |
Orientation | поворот у градусах |
CFrame | місце і поворот разом |
Shape | форма: куб, куля, циліндр, клин |
Position вказує на центр деталі, а не на її низ. Через це платформа товщиною два стади, поставлена на висоту нуль, наполовину тоне в землі. Щоб поставити її «на підлогу», потрібна висота в половину товщини. Простий факт, який економить дитині чверть години на першому ж рівні.
CFrame — це місце і поворот в одному значенні. Поки деталь не крутиться, зручніше Position, він простіший. Але якщо треба поставити об'єкт і одразу розвернути, або рухати закріплену платформу, працюють саме через CFrame: два окремі присвоєння дають помітний ривок, одне — плавний рух.
Ім'я і місце в дереві
Дві властивості не змінюють нічого на вигляд, але вирішують, чи знайде скрипт потрібну деталь. Name — це ім'я в Explorer, за яким до неї звертаються. Нові деталі всі називаються Part, і коли їх тридцять, скрипт бере першу-ліпшу з однаковим іменем. Перейменувати ту, з якою працюєш, — звичка, яка економить більше часу, ніж будь-яка інша.
Parent — це те, всередині чого деталь лежить. Змінити батька означає перенести об'єкт в інше місце дерева, і саме так у коді ховають та повертають предмети: деталь, якій призначили порожнє значення батька, зникає зі сцени, але залишається в пам'яті й може повернутися. Повне видалення робиться окремою командою.
Стороннім ефектом тут є порядок: скрипт, який шукає деталь одразу після запуску, може її не знайти просто тому, що сцена ще не доклалася. Надійніше просити почекати, поки об'єкт з'явиться, ніж звертатися наосліп.
Коли деталей багато
Властивості міняються не лише по одній. Виділіть у Explorer кілька деталей з натиснутим Ctrl — панель покаже спільні властивості, і зміна застосується відразу до всіх. Поставити Anchored тридцяти блокам будинку це одна дія, а не тридцять.
Той самий підхід у коді виглядає циклом по вмісту моделі:
for _, ch in ipairs(model:GetChildren()) do
if ch:IsA('BasePart') then
ch.Anchored = true
end
end
Перевірка на тип тут обов'язкова: всередині моделі лежать не лише деталі, а й скрипти, звуки, точки кріплення, і спроба закріпити звук дає помилку. Ця конструкція — перша, де дитина бачить практичну користь циклу поза навчальною задачею, тому її варто показати саме на своєму проєкті, а не на абстрактному прикладі.
Як це виглядає з коду
Будь-яку властивість з панелі можна змінити скриптом — пишеться вона рівно так, як називається:
local chastyna = script.Parent
chastyna.Anchored = true
chastyna.CanCollide = false
chastyna.Transparency = 0.5
chastyna.Material = Enum.Material.Neon
chastyna.Size = Vector3.new(4, 1, 4)
Два останні рядки відрізняються від інших: матеріал і розмір — не просте число й не галочка, а значення особливого виду. Матеріали перелічені в Enum.Material, а розмір і координати записуються через Vector3.new з трьома числами. Спроба написати chastyna.Size = 4 дає помилку, і це найчастіше питання після перших скриптів.
Чого в панелі немає
Частина того, що діти шукають серед властивостей, деталі не належить зовсім. Світіння навколо об'єкта, частинки, підпис над головою, звук — це окремі об'єкти, які вкладають усередину деталі через плюсик у Explorer. Деталь при цьому залишається деталлю, просто всередині неї тепер лежить ще щось зі своїм власним списком налаштувань.
Розуміння цієї межі знімає багато безплідних пошуків. Якщо потрібної галочки в довгому списку немає — майже напевно потрібен не параметр, а вкладений об'єкт. Пошук у верхньому рядку панелі допомагає переконатися швидко: назва властивості вводиться частково, і список одразу звужується.
Чотири пастки
Невидима, але тверда. Прозорість одиниця робить деталь непомітною, і гравець врізається в порожнечу. Для справжнього проходу потрібно ще вимкнути CanCollide. Зворотний випадок теж буває корисним: невидима стіна на краю карти — це саме прозорість без вимкненої твердості.
Дотик спрацьовує сам. Незакріплена деталь, що лежить на підлозі, постійно дрібно рухається під фізикою і сама викликає подію дотику. Монети роздаються без гравця, пастка спрацьовує порожньою. Закріпити — і все припиняється.
Деталь зникла після запуску. Зазвичай вона не зникла, а впала: незакріплена, нічим не підперта, провалилася за межі карти. Зупиніть гру й подивіться в Explorer — якщо деталь у дереві на місці, справа у Anchored.
Скрипт змінює, а нічого не відбувається. Серверний скрипт міняє властивість — бачать усі; клієнтський — лише той, у кого він виконується. Для декоративних ефектів це нормально, для ігрової механіки — джерело розбіжностей між гравцями.
Коли властивості перестали дивувати, час робити деталі реагуючими. Як це робиться, розібрано в довіднику подій Roblox Studio, а сам синтаксис — у матеріалі про базовий Lua. Що ламає перший проєкт найчастіше, зібране в помилках початківців.