Distance between two points
// normal distance
float distance = Vector3.Magnitude(targetPosition - sourcePosition);
// squared distance - faster since it doesn't have to calculate the square root.
// it's useful if you only want to check if one distance is larger than another.
float distance = Vector3.SqrMagnitude(targetPosition - sourcePosition);
Convert euler rotation into quaternion rotation
Quaternion rotation = Quaternion.Euler(0.0F, 90.0F, 0.0F);
Rotate vector by quaternion rotation
Vector3 direction = Vector3.forward * rotation;
Convert direction vector to rotation
Quaternion rotation = Quaternion.LookRotation(direction);
Are two vectors facing in the same direction
float result = Vector3.Dot(sourceDirection, targetDirection);
// result > 0 facing towards, result < 0 facing away
Angle between current transform forward direction and target position
Vector3 localPosition = transform.InverseTransformPoint(position);
float xAngle = Mathf.Atan2(localPosition.y, localPosition.z) * Mathf.Rad2Deg;
float yAngle = Mathf.Atan2(localPosition.x, localPosition.z) * Mathf.Rad2Deg;
Points where two lines will be closest to each other
Vector3 n = Vector3.Cross(line1Direction, line2Direction);
Vector3 u = Vector3.Cross(n, line1Origin - line2Origin) / Vector3.Dot(n, n);
Vector3 intersection1 = line1Origin - line1Direction * Vector3.Dot(line2Direction, u);
Vector3 intersection2 = line2Origin - line2Direction * Vector3.Dot(line1Direction, u);