Version: 2018.4
Направление и расстояние от одного объекта до другого.
Величина одного вектора, лежащая в направлении другого вектора

Вычисление нормали/перпендикуляра

Нормаль (т.е. вектор, перпендикулярный плоскости) часто необходим в процессе создания меша и также может быть полезен при отслеживании пути и других ситуациях. Имея три точки на плоскости, скажем угловые точки треугольника меша, легко вычислить нормаль. Выберите любую из трех точек и затем вычтите ее из каждой из двух остальных точек, чтобы получить два вектора:-

var a: Vector3;
var b: Vector3;
var c: Vector3;

var side1: Vector3 = b - a;
var side2: Vector3 = c - a;

Векторное произведение этих векторов даст третий вектор, перпендикулярный к искомой поверхности. Для определения порядка, в котором два вектора должны быть использованы в функции векторного произведения, можно использовать “правило левой руки”. Если смотреть сверху на поверхность (из которой должна выходить нормаль), первый вектор должен следовать по часовой стрелке за вторым:-

 var perp: Vector3 = Vector3.Cross(side1, side2);

Результат будет направлен в противоположную сторону, если поменять порядок исходных векторов.

Для мешей нормаль должна быть нормализована. Это может быть сделано с помощью свойства normalized, но есть другая хитрость, которая иногда может быть полезна. Вы можете нормализовать перпендикуляр, разделив его на его же длину:-

var perpLength = perp.magnitude;
perp /= perpLength;

Оказывается, площадь треугольника равна perpLength / 2. Это полезно, если вам нужно найти площадь поверхности всего меша, или вы хотите выбрать треугольники случайно, с вероятностью на основе их относительной площади.

Направление и расстояние от одного объекта до другого.
Величина одного вектора, лежащая в направлении другого вектора