I'm not sure what we can do about this; it appears the physics engine doesn't ask if it should collide again after you set the Y, so it's still using the old result. Our code appears to have updated correctly, but the physics engine is not asking for an update. My best guess is that setting the Y to 0 effectively teleports the object through the obstacle, which breaks it because you've forced a physical impossibility upon the physics engine. Can you reproduce it without teleporting objects?