// Update is called once per frame void Update() { _lineStart = GetV2(_lineStartTrans); _lineEnd = GetV2(_lineEndTrans); //Vector2 lineVec = _lineEnd - _lineStart; Vector2 p = GetV2(_pointTrans); //Vector2 pVec = p - _lineStart; //float project = Project(pVec, lineVec); //Vector2 lineDir = lineVec.normalized; //Vector2 proVec = project * lineDir; Vector2 proVec = Math2d.GetPointProjectVectorOnLine(p, _lineStart, _lineEnd); _pointProjTrans.position = _lineStartTrans.position + new Vector3(proVec.x, 0, proVec.y); }