Raycast intersection

i'm trying to create my own raycast AI and I want the enemy to stop following the player when something gets between them. here is my code so far; it moves by its self and it follows the player when they get into range:

var speed : float = 6;
var rotateSpeed : float = 10;
private var direction : float;
var forwardRay : float = 5;
var leftRay : float = 5;
var rightRay : float = 5;
var player : Transform;
var MaxDistance : int = 30;
var MinDistance : int = 5;
var hidden : boolean = true;

function Update () {

Patrol();

var distance : Vector3 = player.position - transform.position;
    //if player is in range, enemy will follow
    if(distance.magnitude < MaxDistance){
        Debug.DrawLine(transform.position, player.position);
        //if something is 4 units away from the enemy, the player becomes hidden
        if(Physics.Raycast(transform.position, player.position, 4)){
            hidden = true;
        }else{
            hidden = false;
        }
    }else{
        hidden = true;
    }
}

function Patrol(){
    //if the player is hidden, the enemy will patrol
    if(hidden){
        //if there is nothing within range, then move forward
        if(!Physics.Raycast(transform.position, transform.forward, forwardRay)){
            transform.Translate(Vector3.forward * speed * Time.smoothDeltaTime);
        }else{
            //if there is something to the left, then direction = 1
            if(Physics.Raycast(transform.position, -transform.right, leftRay)){
                direction = 1;
            //if there is something to the right, the direction = -1
            }else if(Physics.Raycast(transform.position, transform.right, rightRay)){
                direction = -1;
            //if there is nothing to the left or right, then direction = 1
            }else{
                direction = 1;
            }
            //rotate 90 degrees in the direction (1 = right, -1 = left)
            transform.Rotate(Vector3.up, 90 * rotateSpeed * direction);
        }
    //if the player is not hidden...
    }else if(!hidden){
        var distance : Vector3 = player.position - transform.position;

        //move towards player
        velocity = distance.normalized * speed;
        rigidbody.velocity = velocity;
    }
}

you need to ask a question, but does this answer what you meant to ask?

When the player is not hidden, raycast towards the player from the enemy. only if the player is hit move toward him. The trick is to use RaycastHit to see what the raycast hit.

else if(!hidden)
{
    // distance is also the direction of our player from us in this case.
    var distance: Vector3 = player.position - transform.position;

    var hit : RaycastHit;

    if(Physics.Raycast(transform.position, playerDir, hit))
    {
        // look for what makes you player unique, ie: tag, layer, name
        if(hit.transform.tag == "someRandomPlayerQualifier")
        {
            //move towards player
            velocity = distance.normalized * speed;
            rigidbody.velocity = velocity;
        }
    }
}

Hope's this help

Links:Physics.Raycast RaycastHit