float dot = Vector3.Dot(vec, vecNormal);
vec -= dot * vecNormal.normalized;
//Now, expecting this to be true:
//Vector3.Dot(vec, vecNormal) == 0
I’m trying to detract the vecNormal
’s axis from vec
. Doing this I presume I would be able to make the dot product 0, but it doesn’t work. How do I make it so? What am I missing?
but it doesn’t work
That’s not true. It does work, but it’s most likely not exactly 0 due to floating point rounding errors.
Note that Unity already has a method that performs the projection you’re looking for: Vector3.ProjectOnPlane. (This is literally how the method is defined).
Since you said you expect the expression to be true, I would highly recommend watching this numberphile video on floating point numbers.