Системы координат в играх: мировые, локальные, экран

Что такое система координат и зачем она нужна?

Представь, что ты строишь виртуальный мир 🏰. Чтобы разместить персонажей, деревья, здания и управлять их движением, тебе нужна точная система отсчёта — как сетка на карте. Это и есть система координат!

В играх мы используем три основных типа:

  • Мировая 🌍 — общая система отсчёта для всего игрового мира
  • Локальная 🔧 — привязана к конкретному объекту
  • Экранная 🖥️ — для отображения на мониторе игрока

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

Это главная система координат игры — своего рода "вселенская сетка", где всё имеет свои координаты. Обычно мы используем трёхмерные координаты (X, Y, Z).

🎮 В Unity и Unreal Engine начало координат (0,0,0) обычно находится в центре сцены. Запомни: ось Y часто направлена вверх!

Пример расположения объектов в мире:

Объект Координаты (X, Y, Z)
Главный герой (10, 0, 5)
Дерево (15, 0, -3)
Здание (-5, 0, 20)

Когда персонаж движется вперёд, мы изменяем его координаты в мировой системе:

Новые координаты = Старые координаты + Вектор движения

Локальная система координат

Каждый объект в игре имеет свою собственную систему координат! Представь, что ты сидишь в машине 🚗. Для тебя "вперёд" — это куда смотрит машина, а не север на карте.

Локальные координаты полезны для:

  • Вращения объектов вокруг своей оси
  • Прикрепления объектов друг к другу (оружие в руке персонажа)
  • Относительного перемещения ("сдвинуть на 2 метра вправо")

💡 Локальные координаты преобразуются в мировые через матрицу трансформации, которая учитывает положение и поворот объекта!

Пример: меч в руке персонажа имеет локальные координаты (0.5, 1.2, 0.3) относительно центра персонажа.


Экранная система координат

Это то, что видит игрок на своем мониторе! Здесь начало координат обычно в левом верхнем углу, ось X идет вправо, ось Y — вниз.

Экранные координаты используются для:

  • Интерфейса (кнопки, health bar)
  • Отображения курсора мыши
  • 2D-элементов на экране

Преобразование из мировых в экранные координаты:

Экранные_координаты = Мировые_координаты × Матрица_вида × Матрица_проекции

👁️ Камера в игре — это "глаз", который преобразует 3D мир в 2D изображение на экране!


Практическое задание: преобразование координат

Давай решим практическую задачу вместе!

Условие: Персонаж находится в мировых координатах (5, 0, 10). К нему прикреплен меч с локальными координатами (1, 0, 2). Персонаж повернут на 90 градусов вокруг оси Y. Где находится меч в мировых координатах?

Решение:

  1. Поворот на 90 градусов означает, что локальная ось Z объекта становится мировой осью -X
  2. Локальная ось X становится мировой осью Z
  3. Преобразуем локальные координаты меча: (1, 0, 2)
  4. В мировых координатах это будет: (-2, 0, 1)
  5. Добавляем позицию персонажа: (5 + (-2), 0 + 0, 10 + 1)
  6. Получаем: (3, 0, 11)

Ответ: меч находится в мировых координатах (3, 0, 11).


Советы для практического применения

  • 📏 Всегда четко определяй, в какой системе координат работаешь
  • 🔄 Помни о преобразованиях между системами
  • 🎯 Для интерфейса используй экранные координаты
  • 🔧 Для движения объектов относительно друг друга — локальные
  • 🌍 Для глобального позиционирования — мировые

Попробуй создать простую сцену в игровом движке и поэкспериментируй с разными системами координат — это лучший способ понять их на практике! 🚀

Скрыть рекламу навсегда

🎥 YouTube: программирование простым языком

Канал, где я спокойно и по шагам объясняю сложные темы — без заумных терминов и лишней теории.

Подходит, если раньше «не заходило», но хочется наконец понять.

▶️ Смотреть курсы на YouTube