Kinematic and Rigid bodies are two common nodes for dealing with physics and collisions. The fundamental difference between those two types is that RigidBody is influenced by physics, while KinematicBody is not. This impacts how you move and handle collisions with each one of them.

Movement

The only way to move a Rigid body is by applying forces to it, such as impulse, torque, gravity and friction. The physics engine is responsible to calculate the resulting movement and its new position. This makes the movement more realistic, but also harder to control.

As an example, if a body is moving to left, in order to make it go right you need to apply an impulse in the reverse direction. However, before moving to the new direction the body will first deaccelerate to a stop. This may look realistic, but for a user-controlled object, it could be frustrating as controls won't feel as responsive as they should.

Kinematic bodies, on the other hand, are not affected by physics. This gives you freedom two do whatever you want, with the downside of having to implement everything manually. For most games, this is not an issue at all, as probably they would require a simplified and sometimes crooked version of physics.

Collision detection

Rigid bodies are always detecting collisions and notifying it through signals. For instance, every time a body touches a RigidBody it emits a body_entered signal, and a body_exited when the contact stops. This makes the implementation easier as you know those signals will be triggered on every contact.

In contrast, Kinematic bodies do not notify collisions unless a movement is made. When moving it, you need to check if a collision happened either by moving it using move_and_collide or calling get_slide_collision afterwards. Because of that, you will have to design your code in a way it can handle scenarios where your node is being hit while stopped.

Choosing the right one

Rigid bodies are usually used in 3D games or games that require realistic physics simulation. Kinematic bodies are mostly used in 2D games and user-controlled bodies. Your necessities will define which one fits best your game.

Leave a comment if you have something to add or suggest. Thanks.

Documentation: Kinematic Body: 2D, 3D | Rigid Body: 2D, 3D

Post image from Godot Docs