Enemy character walks through solid objects

I have an enemy character that walks toward a fps when it gets within a certain distance. The enemy character walks through rocks and elevated terrain even though I have a rigid body and sphere collided attached to it. I have looked at numerous posts and tried many things to try to fix the problem but nothing seems to be working. I have attached the c# script and the inspector. I would appreciate any help.

using UnityEngine;
using System.Collections;

public class CreatureWalk : MonoBehaviour {

	public int totalSecs = 0;
	public GameObject explosion;
	
	// Use this for initialization
	void Start () {
		
	}
	
	// Update is called once per frame
	void Update () {

		//if (gameObject.activeSelf) {
		//	Debug.Log ("active Flower");

						GameObject GM = GameObject.Find ("GameManager");
		
						//Get Game Manager Component on Object
						GameManager GM_Component = GM.GetComponent<GameManager> ();
		
						if (GM_Component.GameOver) {
								//animation.Play ("idle");
								animation.Play ("idle");

						} else if (GM_Component.FlowerHits > 30) {
								while (totalSecs < 5000) {
										animation.Play ("hit");
										totalSecs += 1;
								}

								//Destroy (gameObject);
			
								//create explosion
								Instantiate (explosion, transform.position, transform.rotation);

								Invoke("Disable",2);
								Invoke("Reenable",2);

								Vector3 currentPosition = this.transform.position;  //get current position of creature
								transform.position = new Vector3(currentPosition.x+10,0.2f,currentPosition.z+10);

								totalSecs =0;
							    GM_Component.FlowerHits =0;


						} else {
								animation.Play ("walk");
								MoveTowardsTarget ();
						}

	}
	
	private void Disable() {
		gameObject.SetActive(false);
		//Debug.Log ("Disable");
	}

	private void Reenable() {
		gameObject.SetActive(true);
		//Debug.Log ("Re-enable");
	}

	//move towards a target at a set speed.
	private void MoveTowardsTarget() {
		//the speed, in units per second, we want to move towards the target
		float speed = 1;
		//move towards the center of the world (or where ever you like)
		//Vector3 targetPosition = new Vector3(0,0,0);

		//move towards the fps
		Vector3 targetPosition = new Vector3(Camera.main.transform.position.x,0,Camera.main.transform.position.z);
		
		Vector3 currentPosition = this.transform.position;

		//print ("Creature at x: " + currentPosition.x);
		//print ("Creature at y: " + currentPosition.y);
		//print ("Creature at z: " + currentPosition.z);

		transform.LookAt (targetPosition);

		//first, check to see if we're close enough to the target
		if (Vector3.Distance (currentPosition, targetPosition) < 30f) { 

						//Debug.Log ("distance between = " +Vector3.Distance(currentPosition, targetPosition).ToString());

						Vector3 directionOfTravel = targetPosition - currentPosition;
						//now normalize the direction, since we only want the direction information
						directionOfTravel.Normalize ();
						//scale the movement on each axis by the directionOfTravel vector components
			
				this.transform.Translate (
				(directionOfTravel.x * speed * Time.deltaTime),
				(directionOfTravel.y * speed * Time.deltaTime),
				(directionOfTravel.z * speed * Time.deltaTime),
				Space.World);
				} else
						animation.Play ("idle");
	}
}

I had a similar problem like this, try baking the terrain and obstacles with Navmesh.