Создание 2D-игр с Tiniest2D
Справочник по API движка
Lesson 8 of 11 • 10 XP
Keep your place in this quest
Log in or sign up for free to subscribe, follow lesson progress, and access more learning content.
Справочник API
Полный справочник API
Также доступен в сокращенной форме внутри самого редактора:

Конструкторы ресурсов
Конструкторы создают основные типы ресурсов, используемые редактором. Когда вы назначаете один из них переменной, редактор распознает его и позволяет вам открыть соответствующий редактор ресурсов с помощью Ctrl+Click.
| Функция | Описание |
|---|---|
Sprite(width, height) |
Создает ресурс спрайта с указанными размерами |
Scene() или Scene(name) |
Создает ресурс сцены |
Audio() |
Создает аудиоресурс в стиле трекера |
Object() или Object(name) |
Создает игровой объект |
Методы списков
Создавайте списки с помощью [] или [value1, value2, ...]. Читайте и перезаписывайте элементы с помощью list[index], и перебирайте с помощью for (var i = 0; i < list.length(); i = i + 1).
| Функция | Описание |
|---|---|
list.add(value) |
Добавляет значение в конец списка |
list.length() |
Возвращает количество элементов в списке |
list.remove(index) |
Удаляет элемент по указанному индексу |
list.clear() |
Удаляет все элементы из списка |
Операторы
Операторы - это небольшие символы, которые выполняют общие вычисления. Оператор модуля особенно полезен для циклических таймеров, индексов, шагов анимации или повторяющихся шаблонов.
| Оператор | Описание |
|---|---|
% |
Модуль. Возвращает остаток от деления |
Свойства объектов
Объекты - это то, что ваш скрипт обычно перемещает и изменяет во время игры. Эти функции читают или обновляют положение объекта, спрайт, поведение столкновения, слой и визуальный оттенок.
| Функция | Описание |
|---|---|
getX(obj) |
Возвращает X-положение объекта |
setX(obj, x) |
Устанавливает X-положение объекта |
getY(obj) |
Возвращает Y-положение объекта |
setY(obj, y) |
Устанавливает Y-положение объекта |
getVelocityX(obj) |
Возвращает X-скорость объекта |
setVelocityX(obj, vx) |
Устанавливает X-скорость объекта |
getVelocityY(obj) |
Возвращает Y-скорость объекта |
setVelocityY(obj, vy) |
Устанавливает Y-скорость объекта |
getName(obj) |
Возвращает имя объекта |
setName(obj, name) |
Устанавливает имя объекта |
getSprite(obj) |
Возвращает спрайт объекта |
setSprite(obj, sprite) |
Назначает спрайт объекту (сбрасывает анимацию до кадра 0) |
getLayer(obj) |
Возвращает слой рисования объекта |
setLayer(obj, layer) |
Устанавливает слой рисования объекта (выше = рисуется позже) |
getTint(obj) |
Возвращает оттенок как список [r, g, b, a] |
setTint(obj, r, g, b, a) |
Устанавливает цветовой оттенок объекта (от 0 до 255) |
getCollisionType(obj) |
Возвращает номер типа столкновения |
setCollisionType(obj, type) |
Устанавливает тип столкновения |
Функции спрайтов
Функции спрайтов позволяют коду просматривать или изменять данные пикселей спрайта и скорость анимации. Большинство игр рисуют спрайты в редакторе, но эти функции полезны для процедурных эффектов, отладки или простых изменений во время выполнения.
| Функция | Описание |
|---|---|
fillSprite(sprite, r, g, b, a) |
Заполняет все пиксели всех кадров сплошным цветом RGBA (0-255) |
getPixel(sprite, frame, x, y) |
Возвращает [r,g,b,a] пикселя в (x,y) в заданном кадре, или null, если вне границ |
setPixel(sprite, frame, x, y, r, g, b, a) |
Устанавливает цвет пикселя в (x,y) в заданном кадре. Ничего не делает, если вне границ |
getAnimationFPS(sprite) |
Возвращает скорость анимации спрайта в кадрах в секунду |
setAnimationFPS(sprite, fps) |
Устанавливает скорость анимации спрайта в кадрах в секунду |
Функции анимации
Функции анимации работают с объектами, использующими спрайты с несколькими кадрами. Используйте их, когда хотите, чтобы код просматривал или заставлял текущий кадр анимации.
| Функция | Описание |
|---|---|
getFrame(obj) |
Возвращает индекс текущего кадра анимации объекта |
setFrame(obj, frameIndex) |
Устанавливает кадр анимации объекта (сбрасывает таймер) |
getFrameCount(obj) |
Возвращает количество кадров в спрайте объекта |
Функции трансформации (Отражение/Поворот)
Функции трансформации изменяют то, как спрайт объекта рисуется без редактирования самого спрайта. Они полезны для повторного использования одного спрайта в нескольких направлениях.
| Функция | Описание |
|---|---|
getFlipX(obj) |
Возвращает, отражен ли объект горизонтально |
setFlipX(obj, flip) |
Устанавливает горизонтальное отражение. true = отражен, false = нормально |
getFlipY(obj) |
Возвращает, отражен ли объект вертикально |
setFlipY(obj, flip) |
Устанавливает вертикальное отражение. true = отражен, false = нормально |
getRotation(obj) |
Возвращает 90-градусный поворот объекта (0-3) |
setRotation(obj, rot) |
Устанавливает 90-градусный поворот: 0=0, 1=90, 2=180, 3=270 градусов по часовой стрелке |
Примечание: Эти трансформации применяются только во время рендеринга. Они не влияют на коллизионные коробки или реальные данные пикселей спрайта.
Типы столкновений
Типы столкновений определяют, как объект участвует в проверках столкновений. Выбирайте тип в зависимости от роли объекта: стены обычно статичные, игроки обычно динамичные, а предметы часто триггеры.
| Константа | Значение | Описание |
|---|---|---|
COLLISION_NONE() |
0 | Без обнаружения столкновений |
COLLISION_STATIC() |
1 | Сталкивается, но не двигается |
COLLISION_DYNAMIC() |
2 | Сталкивается и выталкивается |
COLLISION_TRIGGER() |
3 | Обнаруживает столкновение, но не блокирует |
Функции сцены
Функции сцены контролируют, какая сцена активна, какие объекты находятся внутри нее, и настройки для всей сцены, такие как цвет фона и гравитация. Они также предоставляют функции поиска для нахождения объектов в позициях или по имени.
| Функция | Описание |
|---|---|
addObject(scene, obj) |
Добавляет объект в сцену |
removeObject(scene, obj) |
Удаляет объект из сцены |
setScene(scene) |
Устанавливает активную сцену |
getScene() |
Возвращает текущую активную сцену |
resetScene(scene) |
Сбрасывает сцену в ее исходное состояние (как задумано в редакторе) |
setBackgroundColor(scene, r, g, b) |
Устанавливает цвет фона сцены (RGB 0-255) |
getBackgroundColor(scene) |
Возвращает цвет фона как список [r, g, b] |
getGravityX(scene) |
Возвращает компонент гравитации X сцены |
setGravityX(scene, gx) |
Устанавливает компонент гравитации X сцены |
getGravityY(scene) |
Возвращает компонент гравитации Y сцены |
setGravityY(scene, gy) |
Устанавливает компонент гравитации Y сцены (положительное = вниз) |
getObjectAt(scene, x, y) |
Возвращает первый объект в точке (x,y), или null |
getObjectsAt(scene, x, y) |
Возвращает список всех объектов в точке (x,y) |
getObjectsInBox(scene, x, y, w, h) |
Возвращает все объекты, перекрывающие коробку |
getObjectByName(scene, name) |
Находит объект по имени, или null, если не найден |
getObjectCount(scene) |
Возвращает количество объектов в сцене |
getAllObjects(scene) |
Возвращает список всех объектов в сцене |
isObjectInScene(scene, obj) |
Возвращает true, если объект находится в сцене |
getObjectsBySprite(scene, sprite) |
Возвращает все объекты, использующие данный спрайт |
getObjectsByCollisionType(scene, type) |
Возвращает все объекты с данным типом столкновения |
Воспроизведение аудио
Функции воспроизведения аудио начинают и останавливают аудиоресурсы из скрипта. playAudio() возвращает идентификатор, чтобы вы могли позже остановить или проверить конкретный экземпляр воспроизведения.
| Функция | Описание |
|---|---|
playAudio(audio) |
Запускает аудиоресурс и возвращает идентификатор воспроизведения |
stopAudio(handle) |
Останавливает идентификатор воспроизведения, возвращенный playAudio() |
isAudioPlaying(handle) |
Возвращает true, пока идентификатор воспроизведения активен |
Функции экрана
Функции экрана помогают, когда вам нужно знать размер окна или преобразовать между пикселями экрана и мировыми позициями. Это полезно для прицеливания мышью, обнаружения щелчков и UI, осведомленного о камере.
| Функция | Описание |
|---|---|
getScreenWidth() |
Возвращает ширину экрана/окна в пикселях |
getScreenHeight() |
Возвращает высоту экрана/окна в пикселях |
screenToWorld(screenX, screenY) |
Преобразует координаты пикселей экрана в мировые координаты. Возвращает [worldX, worldY] |
worldToScreen(worldX, worldY) |
Преобразует мировые координаты в координаты пикселей экрана. Возвращает [screenX, screenY] |
Режим окна
Управляйте режимом окна для экспортируемых игр. Эти функции не влияют на воспроизведение в редакторе (редактор имеет более высокий приоритет над состоянием окна).
| Константа | Значение | Описание |
|---|---|---|
WINDOW_WINDOWED() |
0 | Обычный оконный режим |
WINDOW_MAXIMIZED() |
1 | Развернутое окно (по умолчанию) |
WINDOW_FULLSCREEN() |
2 | Безрамочный полный экран |
| Функция | Описание |
|---|---|
getWindowMode() |
Возвращает текущую константу режима окна |
setWindowMode(mode) |
Устанавливает режим окна. Работает только в экспортированных играх |
Пример:
func start() {
// Установите режим окна (WINDOW_MAXIMIZED - это значение по умолчанию для экспортируемых игр)
setWindowMode(WINDOW_MAXIMIZED())
}
Примечание: Если setWindowMode() никогда не вызывается в экспортированной игре, по умолчанию используется WINDOW_MAXIMIZED.
Функции UI
UI использует виртуальное разрешение экрана. Стандартное пространство UI - 100 x 100.
Размер шрифта может быть увеличен для последующих текстовых виджетов с помощью uiPushFontSize(size) и восстановлен с помощью uiPopFontSize(). Цвета шрифтов могут накапливаться с помощью uiPushFontColor(r, g, b[, a]), а заливки элементов UI могут накапливаться с помощью uiPushElementColor(r, g, b[, a]). Как и в остальной части UI в немедленном режиме, эти переопределения применяются при создании UI текущего кадра. Если заданный размер равен 0 или меньше, движок использует автоматический размер.
| Функция | Описание |
|---|---|
getUIResolutionX() |
Возвращает текущее виртуальное значение ширины UI |
setUIResolutionX(width) |
Устанавливает виртуальную ширину UI, используемую для последующих вызовов UI |
getUIResolutionY() |
Возвращает текущее виртуальное значение высоты UI |
setUIResolutionY(height) |
Устанавливает виртуальную высоту UI, используемую для последующих вызовов UI |
uiPushFontSize(size) |
Устанавливает масштаб размера шрифта для последующего текста UI. Значения <= 0 используют автоматический размер |
uiPopFontSize() |
Убирает последнее переопределение размера шрифта UI |
uiPushFontColor(r, g, b) или uiPushFontColor(r, g, b, a) |
Устанавливает переопределение цвета шрифта для последующего текста UI |
uiPopFontColor() |
Убирает последнее переопределение цвета шрифта UI |
uiPushElementColor(r, g, b) или uiPushElementColor(r, g, b, a) |
Устанавливает переопределение цвета заливки для коробок, кнопок, переключателей, ползунков и кнопок изображений |
uiPopElementColor() |
Убирает последнее переопределение цвета элемента UI |
uiLabel(text, x, y) |
Рисует текст в экранном пространстве по виртуальным координатам UI |
uiBox(x, y, w, h) |
Рисует простую панель |
uiButton(text, x, y, w, h) |
Рисует кнопку и возвращает одно из констант состояния UI_*() |
uiToggle(text, value, x, y, w, h) |
Рисует переключатель и возвращает обновленное булевое значение |
uiSlider(text, value, min, max, x, y, w, h) |
Рисует ползунок и возвращает обновленное числовое значение |
uiSprite(sprite, x, y) |
Рисует спрайт в пространстве UI с использованием натурального размера спрайта в единицах UI |
uiSprite(sprite, x, y, w, h) |
Рисует спрайт в пространстве UI с заданным размером |
uiImageButton(sprite, x, y, w, h) |
Рисует кнопку-спрайт и возвращает одно из констант состояния UI_*() |
Константы состояния UI
Функции UI возвращают константы состояния, чтобы ваш скрипт мог определить, находится ли виджет в состоянии покоя, завис или был нажат. Обычно UI_CLICKED() — это значение, которое вы проверяете для действий кнопки.
| Константа | Значение | Описание |
|---|---|---|
UI_IDLE() |
0 | Виджет не находится ни в наведенном, ни в нажатом состоянии |
UI_HOVERED() |
1 | Мышь наведена на виджет |
UI_HELD() |
2 | Кнопка мыши нажата на виджете |
UI_CLICKED() |
3 | Виджет был нажат в этом кадре |
Функции камеры
Положение камеры представляет собой центр вида. Масштаб сохраняет постоянный вертикальный обзор мира независимо от размера экрана.
| Функция | Описание |
|---|---|
getCameraX(scene) |
Возвращает позицию X камеры (центр вида) |
setCameraX(scene, x) |
Устанавливает позицию X камеры |
getCameraY(scene) |
Возвращает позицию Y камеры (центр вида) |
setCameraY(scene, y) |
Устанавливает позицию Y камеры |
getCameraZoom(scene) |
Возвращает уровень увеличения камеры |
setCameraZoom(scene, zoom) |
Устанавливает увеличения камеры. Увеличение 1.0 показывает 720 единиц мира по вертикали, 3.0 показывает 240 единиц. |
Поведение зума: Зум сохраняет постоянный вертикальный обзор мира независимо от размера окна или соотношения сторон. Широкие экраны показывают больше по горизонтали, но столько же по вертикали.
Функции ввода
Функции ввода позволяют игре реагировать на состояние клавиатуры и мыши. Используйте Pressed для однокадровых действий, Held для непрерывного движения и Released для действий, которые происходят при отпускании кнопки.
| Функция | Описание |
|---|---|
isKeyPressed(key) |
Истина только в кадре, когда клавиша была нажата |
isKeyHeld(key) |
Истина, пока клавиша зажата |
isKeyReleased(key) |
Истина только в кадре, когда клавиша была отпущена |
getMouseX() |
Возвращает X мыши в экранных координатах |
getMouseY() |
Возвращает Y мыши в экранных координатах |
getMouseDeltaX() |
Возвращает движение мыши X в этом кадре |
getMouseDeltaY() |
Возвращает движение мыши Y в этом кадре |
isMouseButtonPressed(button) |
Истина только в кадре, когда кнопка мыши была нажата |
isMouseButtonHeld(button) |
Истина, пока кнопка мыши зажата |
isMouseButtonReleased(button) |
Истина только в кадре, когда кнопка мыши была отпущена |
getFPS() |
Возвращает текущие кадры в секунду |
Константы кнопок мыши
Константы кнопок мыши передаются в функции ввода мыши. Они делают код проще для восприятия, чем сырые числа.
| Константа | Описание |
|---|---|
MOUSE_LEFT() |
Левая кнопка мыши |
MOUSE_RIGHT() |
Правая кнопка мыши |
MOUSE_MIDDLE() |
Средняя кнопка мыши |
Константы клавиш
Константы клавиш передаются в функции ввода с клавиатуры. Движок предоставляет буквы, цифры, функциональные клавиши, стрелки и небольшой набор общих специальных клавиш.
Буквы: KEY_A() до KEY_Z()
Цифры: KEY_0() до KEY_9()
Функциональные клавиши: KEY_F1() до KEY_F12()
Специальные клавиши:
| Константа | Клавиша |
|----------|-----|
| KEY_SPACE() | Пробел |
| KEY_ENTER() | Enter/Return |
| KEY_ESCAPE() | Escape |
| KEY_TAB() | Tab |
| KEY_BACKSPACE() | Backspace |
| KEY_DELETE() | Delete |
| KEY_SHIFT() | Shift |
| KEY_CTRL() | Control |
| KEY_ALT() | Alt |
| KEY_LEFT() | Левая стрелка |
| KEY_RIGHT() | Правая стрелка |
| KEY_UP() | Верхняя стрелка |
| KEY_DOWN() | Нижняя стрелка |
| KEY_HOME() | Home |
| KEY_END() | End |
Математические функции
Вспомогательные функции для выполнения общих расчетов, используемых в движении, анимации, случайности и ограничениях значений. Они делают скрипты короче и легче для чтения.
| Функция | Описание |
|---|---|
abs(n) |
Абсолютное значение |
min(a, b) |
Возвращает меньшее из двух чисел |
max(a, b) |
Возвращает большее из двух чисел |
clamp(value, min, max) |
Ограничивает значение между min и max |
lerp(a, b, t) |
Линейно интерполирует от a до b, используя t |
floor(n) |
Округляет вниз до ближайшего целого числа |
ceil(n) |
Округляет вверх до ближайшего целого числа |
round(n) |
Округляет до ближайшего целого числа |
sign(n) |
Возвращает -1, 0 или 1 в зависимости от знака входного значения |
sqrt(n) |
Квадратный корень |
pow(base, exponent) |
Возводит основание в степень |
sin(radians) |
Синус угла в радианах |
cos(radians) |
Косинус угла в радианах |
tan(radians) |
Тангенс угла в радианах |
random() |
Возвращает случайное число с плавающей точкой между 0.0 и 1.0 |
randomRange(min, max) |
Возвращает случайное число с плавающей точкой между min и max |
randomInt(min, max) |
Возвращает случайное целое число между min и max (включительно) |
PI() |
Возвращает число пи (3.14159...) |
TAU() |
Возвращает тау (2 * пи = 6.28318...) |
TWOPI() |
Возвращает 2 * пи (та же величина, что и TAU) |
E() |
Возвращает число Эйлера e (2.71828...) |
deg2rad(degrees) |
Преобразует градусы в радианы |
rad2deg(radians) |
Преобразует радианы в градусы |
Вспомогательные функции
Вспомогательные функции - это общие помощники, которые не принадлежат к конкретному типу актива. print() особенно полезна в процессе обучения, потому что показывает, что делает ваш скрипт.
| Функция | Описание |
|---|---|
print(value) |
Печатает в отладочный вывод (отображается в игре) |
quitGame() |
Выходит из игры. В редакторе останавливает режим игры. В экспортированных играх закрывает приложение |
Строковые функции
Строковые функции работают с текстовыми значениями. На данный момент этот раздел намеренно небольшой.
| Функция | Описание |
|---|---|
strlen(string) |
Возвращает длину строки (количество символов) |
Функции хранения
Сохранение и загрузка игровых данных в файлы. Поддерживает числа, строки, булевы значения и списки (включая вложенные списки). Не поддерживает значения Sprite, Scene, Object или Audio.
| Функция | Описание |
|---|---|
save(path, data) |
Сохраняет данные в файл в двоичном формате. Возвращает true в случае успеха |
save(path, data, format) |
Сохраняет данные с заданным форматом: "binary" или "text" |
save(path, data, format, key) |
Сохраняет данные с шифрованием, используя предоставленную строку ключа |
load(path) |
Загружает данные из файла. Возвращает данные или null в случае неудачи |
load(path, key) |
Загружает зашифрованные данные с использованием предоставленной строки ключа |
fileExists(path) |
Возвращает true, если файл существует по указанному пути |
deleteFile(path) |
Удаляет файл по указанному пути. Возвращает true в случае успеха |
getAppDataPath() |
Возвращает путь к папке AppData/Tiniest2D (создает, если необходимо) |
getDocumentsPath() |
Возвращает путь к папке Документы пользователя |
getGamePath() |
Возвращает каталог, в котором находится исполняемый файл игры |
Пример: Сохранение и загрузка прогресса игрока
// Сохранение данных игрока
var playerData = [100, "Player1", true, [1, 2, 3]]
var savePath = getAppDataPath() + "/MyGame/save.dat"
if (save(savePath, playerData)) {
print("Игра сохранена!")
}
// Загрузка данных игрока
if (fileExists(savePath)) {
var loaded = load(savePath)
if (loaded != null) {
var health = loaded[0]
var name = loaded[1]
var hasKey = loaded[2]
var inventory = loaded[3]
}
}
// Зашифрованное сохранение (чтобы скрыть данные от случайной проверки)
var secretData = ["секрет", 12345]
save(getAppDataPath() + "/MyGame/config.dat", secretData, "binary", "mySecretKey")
var decrypted = load(getAppDataPath() + "/MyGame/config.dat", "mySecretKey")
// Текстовый формат (читаемый человеком, полезный для отладки)
save(getAppDataPath() + "/MyGame/debug.txt", playerData, "text")
Заметки:
- Двоичный формат (по умолчанию) компактен и быстрее
- Текстовый формат читаем человеком, полезен для отладки
- Неправильный ключ шифрования возвращает
null(данные будут испорчены) - Каталоги создаются автоматически при сохранении