Системы координат в играх: мировые, локальные, экран
Что такое система координат и зачем она нужна?
Представь, что ты строишь виртуальный мир 🏰. Чтобы разместить персонажей, деревья, здания и управлять их движением, тебе нужна точная система отсчёта — как сетка на карте. Это и есть система координат!
В играх мы используем три основных типа:
- Мировая 🌍 — общая система отсчёта для всего игрового мира
- Локальная 🔧 — привязана к конкретному объекту
- Экранная 🖥️ — для отображения на мониторе игрока
Мировая система координат
Это главная система координат игры — своего рода "вселенская сетка", где всё имеет свои координаты. Обычно мы используем трёхмерные координаты (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. Где находится меч в мировых координатах?
Решение:
- Поворот на 90 градусов означает, что локальная ось Z объекта становится мировой осью -X
- Локальная ось X становится мировой осью Z
- Преобразуем локальные координаты меча:
(1, 0, 2) - В мировых координатах это будет:
(-2, 0, 1) - Добавляем позицию персонажа:
(5 + (-2), 0 + 0, 10 + 1) - Получаем:
(3, 0, 11)
Ответ: меч находится в мировых координатах (3, 0, 11).
Советы для практического применения
- 📏 Всегда четко определяй, в какой системе координат работаешь
- 🔄 Помни о преобразованиях между системами
- 🎯 Для интерфейса используй экранные координаты
- 🔧 Для движения объектов относительно друг друга — локальные
- 🌍 Для глобального позиционирования — мировые
Попробуй создать простую сцену в игровом движке и поэкспериментируй с разными системами координат — это лучший способ понять их на практике! 🚀