Системы координат

Этот документ описывает системы измерения и координат внутри движка RobustToolbox. Любые GamePack’и должны использовать те же стандарты, что и RobustToolbox.

1 Мир

Мир — это 2D-пространство внутри Карты. 2D-мир существует на плоскости X/Y, а камера как будто находится над поверхностью и смотрит на неё сверху вниз с неба.

Кардинальные направления С/В/Ю/З можно использовать в мире, но будьте осторожны, чтобы не путать их с экранными направлениями. «Восток» соответствовал бы оси +X, а «Север» — оси +Y. Помните, что камера, смотрящая вниз на мир, может вращаться, поэтому направление «Юг» в мире не всегда является «Вниз» или «Юг» на экране.

1.1 Мировые измерения

Все измерения и единицы — в метрической системе. Размеры объектов и расстояния измеряются в метрах. Для визуального ориентира, 1 тайл сетки — это 1м². Спрайты Space Station 13 спроектированы так, что 1 тайл — это 32px², поэтому этот проект также будет использовать 32 тексела на метр для спрайтов.

1.2 Мировая система координат

Игровой мир использует 2D-правосторонние координаты. Это все значения Transform и Angle, с которыми вы работаете в контенте. Это математика, которую вы учили в школе, где единичная окружность вращается против часовой стрелки по мере роста тета. Камера по умолчанию ориентирована так, что смотрит вдоль оси -Z на плоскость X/Y, на которой существуют все сущности. Локальное направление «Вверх» (передняя сторона плоскости X/Y) мира — это +Z. Все вращения происходят вокруг оси Z.

Вы можете нажать клавишу F3, чтобы включить отладочные оверлеи, которые выводят всю информацию о координатах.

1.3 Локальные координаты сущности

+Z должен быть локальным «Вверх» (в стороне от гравитации), чтобы его можно было легко игнорировать в 2D. Три базисных вектора — это +X (Вперёд), +Y (Влево), +Z (Вверх).

Вы можете использовать отладочную команду showpos, чтобы отобразить виджет локального направления на сущностях.

1.4 Матрица вида

Матрица вида по умолчанию начинается без вращения, с масштабом 0.5 (зум 2) и центрирована на прикреплённой сущности клиента. Вид можно поворачивать вокруг оси Z, перемещать в позицию в мире и масштабировать, создавая эффект зума. Матрица вида концептуально является обратной к мировой матрице камеры (если бы камера была сущностью).

Используя эту матрицу вида по умолчанию с вращением 0, ось +X мира направлена вправо, а ось +Y — вверх на экране. Ось +Z выходит из экрана.

Если вы хотите управлять матрицей вида напрямую, вы можете открыть окно VV для вашего игрока, затем на клиенте открыть EyeComponent.

1.5 Матрица проекции

Это базовая ортогональная проекция, как и в любой другой 2D-игре с видом сверху вниз. Расстояние от камеры по оси Z не меняет размер сущностей, все параллельные линии остаются параллельными, а поле зрения представляет собой прямоугольную призму.

2 Экран

Экран — это квадратная область, на которую проецируется игра при рендеринге. Это то, на что вы смотрите, это как окно, через которое можно смотреть на Мир. Некоторые игровые эффекты и UI рисуются непосредственно на экране.

2.1 Система координат UI

UI использует 2D-левосторонние координаты с началом в верхнем левом углу, +X направлен вправо, а +Y — вниз. Вращения происходят по часовой стрелке. Это в точности как в любой другой библиотеке UI.

2.2 Координаты Clyde и OpenGL

Вам не нужно беспокоиться о том, как Clyde работает внутри или как Clyde работает с OpenGL.

Subpages