public static Vector3 ProjectPointOnLine(Vector3 linePoint, Vector3 lineVec, Vector3 point) { //get vector from point on line to point in space Vector3 linePointToPoint = point - linePoint; float t = Vector3.Dot(linePointToPoint, lineVec); return linePoint + lineVec * t; }
public override Vector3 NearestPoint(PointerEventData data) { Ray lineRay = AttachPointRay(); Vector3 linePoint = Math3D.ProjectPointOnLine(lineRay.origin, lineRay.direction, data.pointerCurrentRaycast.worldPosition); return(linePoint); }