В этой статье мы рассмотрим одну из важнейших концепций разработки игр — вектор. Вот почему это полезно при разработке игр. Он часто используется, когда мы хотим переместить персонажа в сцене.

Допустим, мы хотим переместить его на 4 единицы вправо и на 4 единицы вверх. Мы создаем вектор, представленный стрелкой, указывающей направление, в котором должен двигаться наш персонаж. Математически вектор равен (4,4), 4 по оси X и 4 по оси Y.
Затем мы можем добавить этот вектор к текущей позиции символа (3,2). Итак, следующая позиция, в которой должен быть наш персонаж после добавления этого вектора, — (7,6).
Что такое вектор
Вектор определяется направлением и длиной, поэтому мы использовали стрелку для представления вектора. Его можно направить в любую точку пространства вправо, влево, вверх и вниз. Расстояние вектора показывает, как далеко персонаж уходит в пространстве.
У вектора также нет собственного положения, что означает, что его можно разместить где угодно, потому что это просто направление с длиной.
Как использовать вектор в разработке игр?
Вот еще один пример, когда векторы пригодятся.

Когда у нас есть два игрока в сцене, и мы хотим получить расстояние или длину между этими двумя игроками. У обоих игроков есть свои позиции: (5,3) для игрока А и (3,5) для игрока В от центра соответственно. Помните, что вектор - это направление и длина одновременно. Итак, длина равна расстоянию. Как мы можем рассчитать расстояние между этими двумя игроками?
Оставайтесь в безопасности и смотрите любимые спортивные состязания или потоковое видео из любой точки мира с помощью NordVPN. Находитесь ли вы в США или за границей, вы можете получить доступ к своим любимым потоковым сервисам, таким как Netflix, Hulu, BBC iPlayer и другим. Не позволяйте географическим ограничениям мешать вашим развлечениям. Мы защищаем онлайн-трафик с помощью шифрования, что затрудняет слежку или захват данных.
Вычислить вектор
Для этого мы вычитаем позицию игрока A из позиции игрока B или наоборот, потому что мы просто хотим получить расстояние между игроками. Это можно сделать так (3,5)-(5,3). Мы вычитаем компонент x 3–5=-2, затем мы вычитаем компонент y 5–3=2, и в результате получается вектор (-2,2), но как мы вычисляем длину этого вектора?
Это действительно легко. На самом деле это теорема Пифагора. Гипотенуза – это длина вектора, или его называют величиной.

Поэтому, если мы хотим рассчитать расстояние между нашими игроками, мы просто подставляем вектор (-2,2) в формулу Квадратный корень((-2)² + 2²) = 2,82842713. Расстояние между игроками A и B равно 2,83 единицы. Это то же самое и в 3D, просто добавлен третий компонент, который является осью Z (x,y,z). Просто добавьте к формуле еще одну единицу, тогда она будет выглядеть так: Квадратный корень (x² + y² + z²).
Зачем мне знать о векторах?
Да, у нашего игрового движка есть простой способ вычислить это. В Unity есть простая функция получения расстояния между двумя точками в пространстве, например Vector3.Distance(A, B); тогдазачем нам об этом знать?
Что ж, эти знания очень полезны, когда дело доходит до оптимизации вашего кода. Допустим, мы хотим сравнить расстояние двух игроков от финиша. Мы хотим знать, что впереди. Поэтому используйте эту формулу Квадратный корень (x² + y²) дважды, чтобы получить два вектора.

Однако использование оператора Квадратный корень может дорого обойтись процессору при вычислении этих инструкций. Представьте, если бы мы делали это каждый кадр, когда игра запущена. Это может привести к проблемам с производительностью.
Поскольку нам не нужно знать фактическое расстояние, потому что мы просто хотим знать, какое из них впереди, мы можем вычислить его вручную и просто удалить оператор Sквадратный корень и сравнить необработанное значение, чтобы найти, какое из них короче. Вот как мы оптимизируем наш код!
Вот и все! Большое спасибо, если вы дочитали это до конца :)

Другие учебники
Раскрытие информации: некоторые из ссылок в этой статье могут быть партнерскими ссылками, которые могут предоставить мне бесплатную компенсацию для вас, если вы решите приобрести платный план.