I'm making a 2D platformer that uses a rigidbody2D and a bunch of physics for the player movement. Recently I have been attempting to ground clamp the player object so it won't sail off curved surfaces at high speeds. The technique I've been using is simple: sending a raycast below the player, and if it hits something, set its position to slightly above the collision point. For some reason, doing this causes the movement speed of the player to slow down to about half of what it was, along with some visible jittering as the player walks forward. Just for fun, while trying to fix this I replaced the line that sets the player's position to just simply "transform.position = transform.position;" and somehow the problem STILL occurs. I am at a total loss at this point as I cannot understand how setting the position to itself could affect anything. I double checked and made sure that the values being used were the same and they were. I can only imagine there is some behind-the-scenes stuff Unity runs when the position gets changed. Does anyone have any idea how/why this could happen?