Problem with raycast shooting

for example. i created 2 cubes “cube1” and “cube2” both with tag “Map”
so when i shot (using raycast) “cube1” it will move forward by force that bullet created… but when i shot “cube2” , the “cube1” will move instead of “cube2”

here’s the script:

var range = 500;
var shotForce = 100;

function Update()
{
	var bullet : RaycastHit;
	if(Physics.Raycast(transform.position, transform.forward, bullet, range))
	{
		if(bullet.transform.tag == "Map")
		{
			gameObject.FindWithTag("Map").rigidbody.AddForceAtPosition(transform.forward * shotForce, bullet.point);
		}
	}
	Destroy(gameObject);
}

FindWidthTag() is going to find some game object with the tag ‘Map’, but not necessarily the one your raycast hit. Instead do:

bullet.rigidbody.AddForceAtPosition(transform.forward * shotForce, bullet.point);

This will use the rigidbody of the object the raycast hit.