Мировые визуальные объекты
Игра предоставляет WorldVisuals, LineRenderer и SurfaceOverlay. Helpers
SDK создают те же нативные объекты, применяют частые настройки одним вызовом и
при необходимости удаляют их позже.
Это только клиентское отображение. Такие объекты не создают серверных сущностей, коллайдеров или игровых эффектов.
Линия в мире
Заголовок раздела «Линия в мире»import { visuals } from "@killscript/sdk/client";
const line = visuals.line({ points: [start, end], color: new Color(0, 1, 1, 1), width: 0.02, duration: 3,});Helper задаёт количество позиций и преобразует обычный TypeScript-массив
points в индексы от нуля, которые ожидает нативный
LineRenderer.SetPosition().
Основные параметры линии:
| Параметр | Назначение |
|---|---|
points | Упорядоченные точки в мировых координатах; обязательное поле |
color | Цвет всей линии |
width | Базовая толщина |
progress | Видимая доля линии |
patternEnabled | Включает текстурный паттерн |
patternRepeat | Частота повторения паттерна |
patternTexture | Нативная Texture для паттерна |
occludedBrightness / occludedTransparency | Нативные параметры видимости за препятствием |
duration | Удаляет объект через указанное число секунд |
Отметка на поверхности
Заголовок раздела «Отметка на поверхности»const marker = visuals.overlay({ position: hit.Point, size: new Vector3(1, 0.02, 1), color: new Color(1, 0.2, 0.2, 0.55), fillBase: 1, occlusionEnabled: true, visible: true,});Overlay подходит для точки попадания, выделенной области или временной отметки
в мире. position и size задаются в мировых координатах. Остальные поля
напрямую соответствуют сеттерам нативного SurfaceOverlay.
Оба метода могут вернуть undefined, если игре не удалось создать нативный
объект. Учитывайте это перед прямым вызовом его методов:
const path = visuals.line({ points });path?.SetProgress(0.5);Владение и удаление
Заголовок раздела «Владение и удаление»Для короткого эффекта задайте время жизни:
visuals.overlay({ position, size: new Vector3(0.5, 0.02, 0.5), duration: 1.5,});Долгоживущий объект можно удалить явно:
visuals.remove(marker);Или передать во владение включаемому компоненту:
import { scope, visuals } from "@killscript/sdk/client";
const active = scope();active.world(visuals.line({ points: [start, end] }));
// Удалит линию вместе с компонентом.active.dispose();В сгенерированном коде удаление идемпотентно. Ничего страшного, если на один объект одновременно ссылаются duration timer и scope компонента.
Возвращаемые значения остаются нативными LineRenderer и SurfaceOverlay.
Для редкого изменения, которого нет во вспомогательном методе, вызывайте их документированные
методы напрямую.