Курсор в Roblox Studio¶
Курсор в Roblox Studio — это визуальный инструмент навигации и манипуляции объектами в трёхмерном пространстве, представленный стрелками (гизмо) перемещения, вращения и масштабирования, а также маркером позиции. Термин «курсор» в контексте Roblox может обозначать два разных объекта: системный курсор мыши, отображаемый в окне игры, и инструмент-курсор (Cursor) — графический объект типа SurfaceGui или ImageLabel, используемый для создания пользовательского указателя в интерфейсе. В редакторе под курсором обычно понимают манипулятор Transform (Move / Scale / Rotate), а в игровом процессе — кастомный курсор, заменяющий стандартный указатель Windows.
¶Манипулятор объектов в Roblox Studio
¶Инструменты трансформации
Roblox Studio предоставляет три основных инструмента трансформации, вызываемых горячими клавишами:
| Инструмент | Клавиша | Назначение |
|---|---|---|
| Move | Ctrl + 2 | Перемещение объекта по осям X, Y, Z |
| Scale | Ctrl + 3 | Масштабирование объекта |
| Rotate | Ctrl + 4 | Вращение объекта вокруг осей |
После выбора объекта в окне 3D-вьюпорта появляются цветные стрелки: красная — ось X, зелёная — ось Y, синяя — ось Z. Перетаскивание стрелки мышью перемещает Part вдоль соответствующей оси. Для масштабирования вместо стрелок отображаются квадратные маркеры, для вращения — кольца.
¶Настройка сетки и привязки
Точность позиционирования обеспечивается системой Snap (привязки). В меню Model → Snap Settings задаётся шаг сетки (по умолчанию 1 студ-юнит для перемещения и 16 градусов для вращения). Удерживание клавиши Shift при перетаскивании временно отключает привязку, позволяя размещать объекты с плавным позиционированием. Включение/отключение сетки выполняется через кнопку Grid на вкладке Model.
¶Transform по координатам
Для точного размещения объекта используется панель Properties → Position (для Part) или Pivot Offset. Задание числовых значений X, Y, Z позволяет обойтись без мышиного курсора вообще. Аналогично работает вкладка Transform в окне свойств, где указываются точные углы поворота и размеры.
¶Кастомный курсор в игре
¶Понятие и назначение
Внутриигровой курсор — это пользовательский указатель, который заменяет стандартный курсор операционной системы в окне Roblox-игры. Он создаётся на базе объекта PlayerGui и отображается поверх интерфейса. Кастомные курсоры используются для:
- стилизации интерфейса под тематику игры;
- создания атмосферных указателей (например, перекрестие в шутерах);
- реализации нестандартных механик наведения.
¶Способы создания
Способ 1. Встроенный инструмент Cursor. В Explorer создаётся объект типа SurfaceGui или Frame внутри ScreenGui, после чего через скрипт задаётся свойство MouseIconEnabled. Более простой путь — использовать свойство PlayerGui.MouseIcon или Mouse.Icon:
``lua local player = game.Players.LocalPlayer local mouse = player:GetMouse() mouse.Icon = "rbxassetid://<ID изображения>" ``
Загружается изображение курсора через Asset Manager → Images, получается уникальный ID вида rbxassetid://1234567890, который подставляется в скрипт.
Способ 2. ScreenGui + ImageLabel. Создаётся ScreenGui с включённым свойством IgnoreGuiInset, внутри — ImageLabel с текстурой курсора. Скрипт-LocalScript обновляет позицию ImageLabel по координатам мыши:
``lua local mouse = game:GetService("UserInputService") local gui = script.Parent mouse.InputChanged:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseMovement then gui.ImageLabel.Position = UDim2.new(0, input.Position.X, 0, input.Position.Y) end end) ``
При этом стандартный курсор скрывается через UserInputService.MouseIconEnabled = false.
¶Пользовательский курсор через Mouse properties
Объект Mouse (получаемый через Player:GetMouse()) предоставляет свойства:
Icon— путь к изображению курсора;Hit— позиция в 3D-пространстве под курсором;Target— объект (BasePart), на который наведён курсор;KeyDown— событие нажатия клавиши при наведении.
Свойство Target часто используется для реализации подсветки объектов при наведении — классическая механика интерактивных игр.
¶Использование курсора в UI-элементах
При разработке пользовательского интерфейса свойства курсора интегрируются с элементами управления. Кнопки (TextButton, ImageButton) реагируют на события MouseEnter, MouseLeave, MouseButton1Click. Для смены вида курсора при наведении на интерактивный элемент применяется:
``lua button.MouseEnter:Connect(function() game:GetService("UserInputService").MouseIcon = "rbxassetid://..." end) ``
Также существует свойство CursorImage у некоторых GUI-элементов, позволяющее задать локальную замену курсора без глобального изменения.
¶Особенности и ограничения
- Кастомный курсор, заданный через
Mouse.Icon, отображается только при захвате мыши и не влияет на мобильные устройства — на сенсорных экранах курсор отсутствует в принципе. - Разрешение изображения курсора рекомендуется кратно 32×32 или 64×64 пикселя для корректного отображения.
- При публикации игры изображение курсора должно пройти модерацию Roblox (требования к контенту).
- Свойство
MouseIconEnabledсбрасывается при каждом входе игрока, поэтому установка кастомного курсора выполняется в LocalScript, запускаемом черезStarterPlayerScriptsилиStarterGui.
Источники:
- Документация Roblox Developer Hub: Mouse, UserInputService, StarterGui
- Roblox Creator Documentation: UI Design и Input Handling
- Сообщество DevForum Roblox: обсуждения кастомных курсоров и гизмо-инструментов
