I've been reading some of the details about how rigidbodies work so I could optimize my game; cull out unnecessary calculations in my game's code. I'm not using the default physics; I'm calculating the character's movement through custom code. With that in mind, I suspect I should be setting my rigidbody to be kinematic. The documentation says that way I don't need to worry about things like in-engine gravity and other forces, which is great because I'm calculating my own gravity. But the documentation also says "A Kinematic Rigidbody 2D does not collide with other Kinematic Rigidbody 2Ds or with Static Rigidbody 2D." But I do want to use the engine's collision; if I write my own collision code it's just going to take me extra time and it won't run as fast anyway. The way the documentation describes it, it sounds like I couldn't have two characters in my game collide with each other just because I'm making my own gravity calculation. But yet it seems to really be even worse, because when I test using a kinematic character in my game, they fall right through the world geometry. My world geometry doesn't have any rigidbody components, so the kinematic objects actually don't collide with ANY collision. (I guess except for the dynamic rigidbodies.) So first of all, are there some basic settings I'm missing? Should I be able to have a kinematic actor collide with a generic collider with no rigidbody if I just tweak the right settings? And second to that, what would be the best options change for my situation? Since my regular characters are using custom movement code, what can I do to remove the physics calculations I don't need (like gravity) without removing the calculations I DO need (like collision)?