Trouble With Positioning Gameobject : Unity3d

Hello everyone ,

I am making 2d game and in that game scene i am translating zombie game object from right to left.

Zombie is having box collider and rigidbody component.

Have a look at my scene :

Now when they come to the fence means collides with the fence , i want them to position in proper manner as they are not at proper position as you can see in image.

So i have written code to position them in nearest empty position when they collides with fence. But bcz of the rigidbody zombies are not collides with fence hence they dont find empty position.

COde which i have written for zombie is here :

public var maxSpeed : float ;
public var minSpeed : float ;

private var x : float;
private var y : float;
private var z : float;
private var prev : float = 0.0;
private var next : float;

private var currentSpeed : float;
private var stop : boolean = false;
private static var fenceEnemy : int;
private var one : boolean = false;
private var nearestPosition : GameObject;
//for glow effect : material alpha color set 105 , 255 ,255 , 255

function Start () {
	SetSpeed();
}

function Update () {
	
	var amttomove : float = currentSpeed * Time.deltaTime;
	
	if(!stop)
		transform.Translate(Vector3.left * amttomove , Space.World);
}

function SetSpeed()
{
	currentSpeed = Random.Range(minSpeed , maxSpeed);	
}

function OnCollisionEnter(collision : Collision)
{
	if(collision.gameObject.tag == "Fence")
	{		
		stop = true;
		gameObject.rigidbody.constraints = RigidbodyConstraints.FreezeAll;
		fenceEnemy++;
		nearestPosition = GetNearestTaggedObject();
		gameObject.transform.position = nearestPosition.transform.position;
		nearestPosition.gameObject.tag = "full";
		//gameObject.rigidbody.constraints = RigidbodyConstraints.FreezeAll;
		//yield WaitForSeconds(3.00f);
		//Destroy(gameObject);
		
	}	
	
	if(collision.gameObject.tag == "human")
	{
		
		Physics.IgnoreCollision(collision.gameObject.collider, collider);
	}
	if(collision.gameObject.tag == "zombie")
	{
		Physics.IgnoreCollision(collision.gameObject.collider, collider);
	}
}

function GetNearestTaggedObject() : GameObject {
    // and finally the actual process for finding the nearest object:
 
    var nearestDistanceSqr = Mathf.Infinity;
    var taggedGameObjects = GameObject.FindGameObjectsWithTag("empty"); 
    var nearestObj : GameObject = null;
 
    // loop through each tagged object, remembering nearest one found
    for (var obj : GameObject in taggedGameObjects) {
 
        var objectPos = obj.transform.position;
        var distanceSqr = (objectPos - transform.position).sqrMagnitude;
 
        if (distanceSqr < nearestDistanceSqr) {
            nearestObj = obj;
            nearestDistanceSqr = distanceSqr;
        }
    } 
    return nearestObj;
}

So hope you understand the whole situation. if you dnt understand then plz ask me again…

I need your help guys… Thanks for helping me and supporting me

if u r generating random zombies means, movie the first zombie towards target (x=100,Y and Z are same),and next one move towards(target+=2) like this for even zombie set target as target+=2 and for odd one target-=2, when colliding with fence stop the movement