There is a builtin option in Rigidbody and I think also KinematicBody called continuous collision detection or CCD. It is supposed to do this for you, and with engine code (so much faster because it’s pure C++).
However I have read some posts here and there saying it doesn’t work properly.