Добавить в корзинуПозвонить
Найти в Дзене
Игровой движок Godot engine

№210. Разбираем 2D Transforms.

Данную статью я взял с сайта KidsCanCode, и решил не адаптировать и оформить "как есть". В 2D-пространстве мы используем привычную плоскость координат XY.
Напомню, что Godot, как и в большинстве приложений компьютерной графики, ось Y направлена вниз: Для начала давайте рассмотрим этот космический корабль, парящий в космосе: Корабль направлен в том же направлении, что и ось X. Если бы мы хотели, чтобы он двигался вперед, мы могли бы добавить к его координате X , и он бы двигался вправо: position += Vector2(10, 0) Но что произойдет если мы повернем наш корабль ? Как нам теперь заставить наш корабль лететь вперед ?
Если вы помните тригонометрию со школы, вы возможно начнете думать об углах, синусах и косинусах .
Но есть гораздо более удобный способ: Использовать Transform . Давайте снова посмотрим на повернутый корабль, но на этот раз представим, что у корабля есть собственные оси X и Y , которые он несет с собой, независимые от глобальных осей: Эти «локальные» оси содержатся в объекте

Данную статью я взял с сайта KidsCanCode, и решил не адаптировать и оформить "как есть".

В 2D-пространстве мы используем привычную плоскость координат XY.
Напомню, что Godot, как и в большинстве приложений компьютерной графики, ось
Y направлена вниз:

Для начала давайте рассмотрим этот космический корабль, парящий в космосе:

-2

Корабль направлен в том же направлении, что и ось X. Если бы мы хотели, чтобы он двигался вперед, мы могли бы добавить к его координате X , и он бы двигался вправо:

position += Vector2(10, 0)

Но что произойдет если мы повернем наш корабль ?

-3

Как нам теперь заставить наш корабль лететь вперед ?
Если вы помните тригонометрию со школы, вы возможно начнете думать об углах, синусах и косинусах .
Но есть гораздо более удобный способ: Использовать
Transform .

Давайте снова посмотрим на повернутый корабль, но на этот раз представим, что у корабля есть собственные оси X и Y , которые он несет с собой, независимые от глобальных осей:

-4

Эти «локальные» оси содержатся в объекте Transform.

Зная это, мы можем двигать корабль вперед, перемещая его вдоль его собственной оси X.

position += transform.x * 10

Давайте разберемся что тут происходит: Transform содержит X и Y свойства, которые представляют эти локальные оси. Они являются единичными векторами , что означает, что их длина равна 1.
Другой термин для единичного вектора —
вектор направления . Они сообщают нам направление оси x корабля . Затем мы умножаем на , 10 чтобы масштабировать его на большее расстояние.

Transform свойство узла относительно его родительского узла. Если вам нужно получить глобальное значение, оно доступно в Global Transform.

В дополнение к локальным осям, преобразование также содержит компонент, называемый Origin. Начало координат представляет собой перемещение или изменение позиции.

На этой картинке синий вектор — это Transform.origin. Он равен вектору Position .

-5

На этом всё. Более подробно можно почитать в родной документации.

Подписывайтесь на канал, при желании вступайте в группу в ВК.
Удачи в изучении годо !

-6