| JuiceАнимация | What it doesЧто делает |
| _pop | the panel springs in with an overshoot the moment it appears — start scale and pop time are yours. Put it on anything _open shows, or on a layer that is already on screen at spawn: it plays once on every appearanceпанель влетает с пружинным перелётом в момент появления — начальный размер и время задаются в плагине. Ставьте на всё, что показывает _open, или на слой, который виден сразу при заходе: эффект играет при каждом появлении |
| _reveal | the showcase entrance: the panel grows from half size while rocking through a few decaying swings, then settles. Swing angle, settle time and start scale are sliders; the dial picks the rocking direction (0 = up and down like a display case, 90 = sideways). Replays on every _openвитринное появление: панель вырастает с половины размера, покачиваясь затухающими взмахами, и успокаивается. Угол распаха, время успокоения и начальный размер — ползунки; диск выбирает направление качания (0 — вверх-вниз, как витрина, 90 — вбок). Повторяется при каждом _open |
| _swing | the reward-door entrance: the panel snaps in fast and rocks in true 3D — nodding toward you and away, each rock softer than the last, until it stands still. Rock angle, rocks before settling, settle time and start scale. The card is mounted on a real surface in the world, so the perspective is genuine rather than a squash. Replays on every _openпоявление «дверцей»: панель влетает и качается в настоящем 3D — кивает к вам и от вас, каждый мах мягче предыдущего, пока не встанет. Угол качания, число махов, время успокоения и начальный размер. Карточка живёт на реальной поверхности в мире, поэтому перспектива настоящая, а не сплющивание. Повторяется при каждом _open |
| _cascade | children of this frame arrive one after another with a spring, top to bottom — the staggered shop-grid entrance. One slider: the delay between items. Only clickable cards are staggered; titles, dividers and decoration come in with the frame, so the panel never looks half-builtсодержимое фрейма приезжает по очереди с пружиной, сверху вниз — та самая лесенка появления карточек в магазине. Один ползунок: задержка между элементами. По очереди выходят только кликабельные карточки; заголовки, разделители и украшения приходят вместе с фреймом, поэтому панель не выглядит недособранной |
| _pulse | a heartbeat: the layer swells and settles forever, pulling the eye to BUY / CLAIM. Beat strength and beats per second. For the smoothest beat add _3d to the same layer — it then scales as a surface in the world instead of the whole-pixel UI grid (set Tilt strength to 0 if you do not want the cursor tilt as well)сердцебиение: слой ритмично раздувается и опадает, притягивая взгляд к BUY / CLAIM. Сила удара и число ударов в секунду. Для самого плавного биения добавьте на тот же слой _3d — тогда слой масштабируется как поверхность в мире, а не по целым пикселям интерфейса (поставьте силу наклона в 0, если наклон к курсору не нужен) |
| _jelly | an idle jelly wobble — a small rotation and a breath of scale, randomised per layer so a whole grid never wobbles in step. Wobble angle and speedжелейное покачивание в покое — небольшой поворот и лёгкое дыхание размера, со случайной фазой на каждом слое, чтобы сетка не качалась в такт. Угол покачивания и скорость |
| _wiggle | rings like a bell: a quick rotational swing that fades out, repeating every few seconds. Swing angle and interval — a quiet way to point at a button without shoutingзвенит, как колокольчик: быстрый поворотный мах, который затухает и повторяется раз в несколько секунд. Угол качания и интервал — тихий способ указать на кнопку, не крича |
| _shake | a burst of decaying shudder every few seconds — the “unclaimed reward, look at me” nudge. Shake distance, burst length and repeat intervalвспышка затухающей тряски раз в несколько секунд — толчок «награда не забрана, посмотри сюда». Размах, длина вспышки и период повтора |
| _glow | a breathing glow around the layer: colour, size and breathe speed. If the layer already has a stroke, that stroke breathes; if it does not, Framewisp draws a halo around it. The ring holds its density and only its size breathes, so it reads as light rather than blinkingдышащее свечение вокруг слоя: цвет, размер и скорость дыхания. Если у слоя есть обводка — дышит она; если нет — рисуется ореол. Плотность кольца постоянна, дышит только размер, поэтому это читается как свет, а не как мигание |
| groups | Uploading for a group. A Roblox sign-in authorises you, never your groups — that is why a group upload answers "user not authenticated" however senior your role is. Roblox opens exactly one door for it: an Open Cloud API key. In the plugin, open "Uploading for a group?", pick the group (the list comes from your sign-in), and paste a key created at create.roblox.com/dashboard/credentials with the API System assets (not legacy-assets and not asset-permissions), adding that group as the creator inside it and ticking Read and Write. Framewisp checks the key against Roblox before saving it, keeps it on the server and never shows it again — "Back to my account" deletes it. This matters when the GAME is owned by the group: an experience can only read assets its own owner uploadedЗагрузка в группу. Вход в Roblox авторизует тебя, а не твои группы — поэтому загрузка в группу отвечает «user not authenticated», какая бы роль в группе ни была. Roblox оставляет ровно одну дверь: ключ Open Cloud API. В плагине открой «Грузить в группу?», выбери группу (список приходит из твоего входа) и вставь ключ, созданный на create.roblox.com/dashboard/credentials с системой assets (не legacy-assets и не asset-permissions), добавив эту группу внутрь неё как создателя и отметив Read и Write. Framewisp проверяет ключ у Roblox до сохранения, держит его на сервере и больше никогда не показывает — «Обратно в мой аккаунт» его удаляет. Это нужно, когда ИГРА принадлежит группе: опыт читает только те ассеты, которые загрузил его собственный владелец |
| _focus | put it on the panel and the world behind it reacts when the panel opens: the camera pushes in, Lighting picks up a blur, and the world can darken. Closing the panel puts all three back, and two panels open at once blur once, not twice. Set the camera push in degrees — added to the game’s own field of view, negative pushes in — the blur, how far the world darkens and how many seconds the move takes. Nothing in your design changes: the tag touches the world, not the UI, so a panel you already built picks it up as it is. Delete the script and the world simply stops reactingповесьте на панель — и мир позади реагирует на её открытие: камера наезжает, в Lighting появляется размытие, мир можно затемнить. При закрытии всё возвращается, а две открытые панели размывают один раз, а не дважды. Задаётся наезд камеры в градусах — прибавляется к углу обзора самой игры, минус — это наезд, — размытие, сила затемнения и время. Сам дизайн не меняется: тег трогает мир, а не интерфейс, поэтому уже готовая панель подхватывает его как есть. Удалите скрипт — мир просто перестанет реагировать |
| _fall | rain inside the object. Tag any layer — a plain rectangle works — and upload the picture that falls right in the effect panel: the layer stays exactly as drawn, and the picture rains inside it at its own size. Prefer drawing it? A tagged picture rains in the frame you placed it in, and a tagged container rains its top layer. The template stops showing; copies arrive and leave through transparency, each at its own size, tilt and speed, and smallest / largest copy are two separate sliders. Keep apart spreads the copies out — the distance between them is a slider, in copy widths. The box that cuts the rain is a CanvasGroup, because Roblox’s ordinary clipping has never cut a rotated child — and every copy is tiltedдождь внутри объекта. Повесьте на любой слой — хоть на обычный прямоугольник — и загрузите падающую картинку прямо в панели эффекта: слой остаётся ровно как нарисован, а картинка сыплется внутри него своим размером. Хотите нарисовать? Картинка с тегом падает во фрейме, куда вы её положили, а контейнер с тегом сыплет свой верхний слой. Шаблон перестаёт показываться; копии появляются и уходят через прозрачность, каждая со своим размером, наклоном и скоростью, а самая мелкая / самая крупная — два отдельных ползунка. Держать дистанцию разводит копии в стороны — расстояние между ними задаётся ползунком, в ширинах копии. Рамку, которая режет дождь, держит CanvasGroup: обычная обрезка Roblox никогда не резала повёрнутый элемент, а каждая копия наклонена |
| _flow | the gradient never stops moving on the layer — a shifting title, a live progress bar, a rainbow badge. It moves the gradient you already drew in Figma, so the colours stay yours; the plugin also ships ready-made gradients you can drop onto the layer in one click, with rotation and saturation. Set how many seconds one full pass takes, whether it slides or rotates, and what it paints: the fill, the stroke (a glowing outline around text) or both. The colours march through the layer instead of being slid across it, so the loop has no seam and no trailing band of the first colour. Rainbow mode ignores your colours and runs the spectrumградиент бесконечно движется по слою — переливающийся заголовок, живая полоса прогресса, радужный значок. Двигается тот градиент, который вы уже нарисовали в Figma, — цвета остаются вашими; в плагине ещё есть готовые градиенты, они ставятся на слой в один клик, с поворотом и насыщенностью. Задаётся, за сколько секунд проходит полный цикл, плывёт он или вращается и что красит: заливку, обводку (переливающийся контур у текста) или и то и другое. Цвета шагают сквозь слой, а не съезжают по нему, поэтому у цикла нет шва и нет хвоста из первого цвета. Режим радуги игнорирует ваши цвета и гоняет спектр |
| _shadow | a real UIShadow with every setting Roblox has: colour, transparency, offset, blur, spread and Inset for an inner shadow. Use it when the shadow is part of the design rather than a soft drop under a card — Framewisp normally bakes the Figma shadow, and this tag takes that over so the tag owns the look, not the export. Roblox refuses a gradient on a shadow, so "two-tone" is exactly what the engine can draw: turn on the second colour and you get two shadows pulled apart along the offset — a coloured rim on one side, the darker one on the other. A shadow takes the SHAPE of the layer it sits on, so tag the layer that carries the rounding — and if you tag a transparent group whose rounded card fills it, Framewisp lends the shadow that card's corner instead of throwing a square one. Blur, spread and offset are design pixels: they scale with the rest of the UI, so the shadow stays the same size relative to its card on every screenнастоящий UIShadow со всеми свойствами Roblox: цвет, прозрачность, смещение, размытие, разброс и Inset для внутренней тени. Нужен, когда тень — часть дизайна, а не мягкая подложка под карточкой: обычно Framewisp запекает тень из Figma, а с тегом внешний вид задаёте вы, а не экспорт. Градиент на тень Roblox не даёт, поэтому «двухцветность» сделана тем, что движок реально умеет: включаете второй цвет — получаете две тени, разведённые по смещению: цветной кант с одной стороны, тёмный с другой. Тень принимает ФОРМУ слоя, на котором стоит, — вешайте тег на слой со скруглением; а если тег попал на прозрачную группу, внутри которой скруглённая карточка во всю её величину, Framewisp отдаст тени скругление этой карточки, а не нарисует прямоугольник. Размытие, разброс и смещение задаются в пикселях макета и масштабируются вместе с остальным интерфейсом — тень остаётся одного размера относительно своей карточки на любом экране |
| _rays | for the sunburst you drew behind a reward: a slow spin plus a gentle pulse, the classic prize backdrop. Spin speed (either direction) and pulse depthдля лучей, нарисованных за наградой: медленное вращение плюс мягкий пульс — классическая подложка приза. Скорость вращения (в любую сторону) и глубина пульса |
| _pixels | a mosaic shimmer over the layer: little squares light up at random and fade, like a pixel background come alive. Cell size (even or random), twinkles per second, accent colour and max opacity. It stays inside the layer's rounded corners, so a card still looks like a cardмозаичное мерцание поверх слоя: квадратики загораются в случайных местах и гаснут, как ожившая пиксельная подложка. Размер клетки (ровные или вразнобой), вспышек в секунду, цвет и максимальная непрозрачность. Мерцание живёт внутри скруглений слоя, поэтому карточка остаётся карточкой |
| _gleam | a white light sweeps across the TEXT from left to right — fill and outline together — like a title flash. Sweep time, pause between sweeps and wave width. It needs live Roblox text, so add _keep if the layer uses a display font that would otherwise be baked into an imageбелый блик проезжает по ТЕКСТУ слева направо — по заливке и обводке сразу — как вспышка на заголовке. Время прохода, пауза между проходами и ширина волны. Нужен живой текст Roblox: если шрифт декоративный и слой запекается в картинку, добавьте _keep |
| _squish | squash-and-stretch press: the button flattens wide under the press and springs back on release. Squash amount and return time. Makes the layer a buttonнажатие со сплющиванием: кнопка приседает и расплывается вширь при нажатии и упруго возвращается при отпускании. Сила сплющивания и время возврата. Делает слой кнопкой |
| _ripple | a circular wave expands from the exact click point, reaches the farthest corner of the button and fades there. Colour, opacity and expand time. It is clipped by the button's own rounded corners. Makes the layer a buttonкруглая волна расходится ровно от точки клика, добегает до дальнего угла кнопки и там гаснет. Цвет, непрозрачность и время расширения. Обрезается скруглениями самой кнопки. Делает слой кнопкой |
| _billboard | import the design as a BillboardGui — world-space UI for name plates, health bars and shop stands. Put the tag on the ROOT frame: everything inside stays scale-based, so nothing needs manual maths. Set the width in studs (height follows your design's aspect), whether it draws through walls, and a max distance. In Studio just drop the billboard under a Part — move it to another Part and the UI goes with it. Every effect runs there too: the runtime rides inside the BillboardGui, so a duplicated Part keeps its animation without any host in StarterGui. Scene lighting does not tint it, and text is placed by its baseline, so a title reads at the Figma size and position at any distanceимпортировать макет как BillboardGui — интерфейс в мире: таблички с именами, полоски здоровья, вывески магазинов. Тег ставится на КОРНЕВОЙ фрейм: всё внутри остаётся в долях, руками ничего пересчитывать не нужно. Задаются ширина в стадах (высота берётся из пропорций макета), видимость сквозь стены и предельная дальность. В Studio достаточно положить билборд под Part — перетащите его на другой Part, и UI переедет вместе с ним. Эффекты работают там же: рантайм живёт внутри BillboardGui, поэтому копия парта сохраняет анимацию без хоста в StarterGui. Освещение сцены его не подкрашивает, а текст ставится по базовой линии — заголовок читается как в Figma по размеру и месту на любой дистанции |
| _prompt | turn a design into the custom UI of a ProximityPrompt (walk up, press a key). Tag the ROOT frame of a _billboard design: the import creates an anchor Part with a ProximityPrompt (Style=Custom) on it and shows your UI when a player approaches. The key, the hold time and the show distance are set in the plugin and travel with the convert; every property stays editable on the prompt itself. Line of sight is off on purpose — a prompt inside a crate or behind glass would otherwise never appear. Connect .Triggered in your own script for the game logicпревращает макет в кастомный UI для ProximityPrompt (подошёл — нажал клавишу). Тег на КОРНЕВОЙ фрейм _billboard-макета: импорт создаёт якорь-Part с ProximityPrompt (Style=Custom) и показывает UI при приближении игрока. Клавиша, время удержания и дистанция задаются в плагине и едут вместе с конвертом; все свойства при этом остаются правимыми на самом промпте. Line of sight выключен намеренно — иначе промпт в ящике или за стеклом просто не появлялся бы. Логику подключайте сами через .Triggered |
| _hold | inside a _prompt design: the layer that fills while the key is held. Tag the element carrying the stroke — usually your button's border — and that outline fills with your colour, left to right, over exactly the prompt's hold time. Let go early and it drains back instead of snapping to zero. The colour is a slider in the plugin, or a HoldColor attribute on the layer in Studio. The fill happens in place: your own stroke is repainted through a gradient, so rounded corners come for free and the layer keeps its exact size and position. A layer with no stroke fills its background insteadвнутри _prompt-макета: слой, который заполняется, пока игрок держит клавишу. Тег вешается на элемент с обводкой — обычно это рамка кнопки — и она заливается вашим цветом слева направо ровно за время удержания. Отпустил раньше — заливка стекает обратно, а не схлопывается. Цвет задаётся ползунком в плагине или атрибутом HoldColor в Studio. Заливка идёт по месту: перекрашивается ваша же обводка через градиент, поэтому скругления работают сами, а размер и позиция слоя не меняются. У слоя без обводки заливается фон |