Sorry, my definition of box is probably not the one you had in mind - I meant like a cardboard box, 4 sides and a bottom. IOW a vessel to catch and contain other collision objects.
Kinematic bodies are for collision detection, but you must move them and calculate collision response yourself.
How do I do that then?
I want a rigid body that collides with objects, but is not influenced by them or gravity, and can be moved around in the context of the physics environment (ie, not setting the spatial's transform directly, but using velocity to define the object's position).
In other words, any collision forces to the box must be ignored, it should not be influenced by them even slightly, but it must also allowing movement of the box from the player across the x and z axis.
I've tried using _IntegrateForces on a plain RigidBody to alter the state, which allows the kind of rigid movement I'm looking for, but I still can't find a way of effectively nullify the forces of the falling objects on the box.
Another issue ofcourse is that MoveAndSlide and MoverAndCollide stop dead on encountering a movable rigidbody.
I'm sure this is not an issue in other physics engines and this behaviour seems totally unintuitive.
From experience, I've used kinetic bodies in Box2D and Unity for what are essentially animated bodies, moving on a fixed path (like a moving 3d platform) and they work as assumed - the kinematic body if it hits an object, moves the object and doesn't slow down itself.
I just can't recreate this behaviour though.
I've come across a similar issue on github, people are suggesting there should be a moveandpush function: https://github.com/godotengine/godot/issues/7130
How can I implement this myself?