Автор Тема: Игровая математика, алгебра, геометрия и физика  (Прочитано 1907 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Ноябрь 13, 2014, 21:35:11 pm
Прочитано 1907 раз

Mimi Neko

  • Администратор
  • Старожил форума

  • Оффлайн
  • *****

  • 2456
  • Репутация:
    153
    • Просмотр профиля

Ноябрь 06, 2016, 14:31:55 pm
Ответ #1

Mimi Neko

  • Администратор
  • Старожил форума

  • Оффлайн
  • *****

  • 2456
  • Репутация:
    153
    • Просмотр профиля
Работа с векторами:

Vector3.Lerp(startPosition, endPosition, Time.deltaTime(Time.tim/60)) — плавное передвижение объекта c одной точки в другую (вычитание промежуточных переменных называется Интерполяцией)

Vector3.Slerp(startPosition, endPosition, Time.deltaTime(Time.tim/60)) — плавное передвижение объекта по дуге c одной точки в другую

Vector(2,3,4).Magnitude — Находит длину вектора, это может быть вектор скорости, растояния, силы.

Vector(2,3,4).sqrMagnitude — тоже самое что и выше только без вычитания корня

Vector(2,3).ClampMagnitude(вектор, ограничитель) — ограничения вектора заданными параметрами,
используется для ограничения передвижения по диагонали.

Vectror(2,3) A — Vectror(2,3) B — вычитание векторов используется чтобы получить вектор движения, перемещения. порядок имеет значение.

Vector(2,3) A * speed — умножение вектора на скаляр speed используется чтобы ускорить или замедлить обьект, например можно использовать для влияние с помощью сил: дождь, ветер, солнце.

Vestor(2,3,4).Distance(endPos,startPos) аналогично (endPos-startPos).Magnitude — расстояние между двумя точками (вычитаение точек и находим длину найденного вектора)

public Vector3.normalized — возвращает копию вектора, который нормализирован, тоесть длина вектора (magnitude) составляет 1, направление копии такое же как и оригинала

public void Normalize() — функция выполняет нормализацию вектора, если значения слишком малы для нормализации, то возвращает 0 ( Нормализация производится просто, каждый параметр делится на длину вектора). Нормализированный вектор используется для контроля, чтобы точно управлять, например, скоростью.

Vector(2,3).Dot (Vector3 A, Vectror3 B) — скалярное произведение векторов (Dot Product), возвращает скаляр от -1 до 1. По сути, это перемножение двух векторов после чего умноженных на косинус угла между векторами. Используется в игре, например, для проверки находится ли герой в поле зрения врага.
Если 1 — то векторы паралельный,
если больше 0, то векторы направлены в одну сторону, но не паралельны,
если 0 , то векторы перпендикулярны,
если меньше 0, то векторы направлены в разные стороны,
если -1, то векторы паралельны но направлены в разные стороны.cos 0 — 1
cos 60 — 0.5
cos 90 — 0

Vector3.Cross(Vector3 A, Vector3 B) — использует для поиска нормали (перпендикуляра) к плоскости, чтобы узнать куда смотрит тот или иной обьект.Величина результата равна произведению величин исходных векторов, умноженному на синус угла между ними. Для поиска направления вектора используется правило левой руки (большой палец, это первый вектор, указательный второй, средний палец укажет направление перпендикуляра)

Поворот точки на угол angle: 
rotated_point.x = point.x * cos(angle) — point.y * sin(angle); rotated_point.y = point.x * sin(angle) + point.y * cos(angle);

Vector3.SmoothDamp плавное перемещение параметры описаны тут
public static Vector3 SmoothDamp(Vector3 current, Vector3 target, ref Vector3 currentVelocity, float smoothTime, float maxSpeed = Mathf.Infinity, float deltaTime = Time.deltaTime);

Дополнительные материалы:
Таблицы Брадиса — http://uchim.org/matematika/tablica-bradisa — опеределение угла cos sin с помощью числа.

источник: https://unity-help.tk