Hey,
Just dropping this here for future searches. I learned that path.velocity stops updating if canMove is false and therefore stays at whatever it was last at. This can produce undesired results where the character isn’t moving but path.velocity still suggests it is. It can easily be worked around with something like this:
if(!path.canMove) { velocity = 0; } else { velocity = path.velocity.sqrMagnitude; }
SUGGESTION TO AUTHOR: It might be helpful to have path.velocity = Vector3.Zero when canMove is false so velocity is always accurate.
Anyway, hope this might help others in the future. Thx