For those having the character-sinking issue when implementing the custom crouch, its because the mesh component is attached to the very middle of the capsule, and when you change the capsule height the point the mesh is parented to changes as well. How I solved it was to AddRelativeLocation to the Mesh component with a + offset in Z when crouching, and a - offset when uncrouching. Hypothetically (CapsuleHeight - CrouchCapsuleHeight)/2 would give you the needed offset, but for my test animations at least I needed to boost that offset another 5 units.