I have 2 physics bodies. The man and the bullet. The bullet must fly through the man and not collide with him, but I want catch the moment when they contact. And bullets must collide with other bodies on the scene. How I can do this?
Enable the Is Trigger checkbox on objects which you don't want to react to physical collisions. http://docs.unity3d.com/Documentation/ScriptReference/Collider2D.OnTriggerEnter2D.html http://docs.unity3d.com/Documentation/ScriptReference/Collider.OnTriggerExit.html http://docs.unity3d.com/Documentation/ScriptReference/Collider2D.OnTriggerStay2D.html
By react, I mean bounce off of. OnTrigger functions are invoked if a collider enters another collider flagged as a trigger (it's similar to OnCollision in that respect). For example, if your bullet is flagged as a trigger, it will pass through objects, but OnTriggerEnter will detect the collision, so you can perform what actions you need to, whether that's destroying the bullet, removing health from the target, spawning particles or simply ignoring the collision (I.e. between man and bullet) altogether. You can also put objects on separate layers, I.e. Player, Bullets, Enemies ... And filter collisions with masking in the Physics Manager.
I know how works triggers and layers. But my bullet can't be a trigger - it must bounce from walls, fly through the man, but "react" with him. As variant I can use raycast or something like it. But I want use physics collisions, like I did it on actionscript with box2d.
Layers are your friend here i would say. You can define what layer can collide with what layer. So put bullet and player at different layers and disable collisions between them. You could then use raycast instead a collision to trigger if the bullet has hit the player.
As attached. Put a second collider marked as trigger, on a layer that your bullet can interact with, as a child of the man. Put the man's main collider on a layer that can't interact with the bullet.