How to report your problem productively in the Unity3D forums:
http://plbm.com/?p=220
This is the bare minimum of information to report:
what you want
what you tried
what you expected to happen
what actually happened, especially any errors you see
links to documentation you used to cross-check your work (CRITICAL!!!)
If you post a code snippet, ALWAYS USE CODE TAGS:
How to use code tags: Using code tags properly
You may edit your post above.
With Physics (or Physics2D), never manipulate the Transform directly. If you manipulate the Transform directly, you are bypassing the physics system and you can reasonably expect glitching and missed collisions and other physics mayhem.
Always use the .MovePosition() and .MoveRotation() methods on the Rigidbody (or Rigidbody2D) instance in order to move or rotate things. Doing this keeps the physics system informed about what is going on.
You say you’re not using 2D physics but you’re using queries therefore obviously colliders. This IS using 2D physics therefore you need to use it correctly so here are some basic rules:
Don’t ever modify the Transform if using 2D physics components
If you want a 2D Collider to move then add a Rigidbody2D and use its API to move it; many ways to do this.
Rigidbody2D don’t make it “unresponsive”. If you want explicit control then set the body-type to Kinematic; it’s what it’s for.
When…
That’s not related to body-type. You should never drive via the Transform. The main thing to understand here is that the Rigidbody2D role is to write to the Transform after the physics simulation, not the other way around. It acts as a proxy to the Transform because you want physics behaviour.
Does “it work” if you write to the Transform and force the Rigidbody2D to read from the Transform? Yes! It works like that because otherwise it’d be reported as a bug and so we’re forced to “support” it.…