Object floating and going through walls/ground.

In my game I have a character that I want to follow the player, but the character(a zombie), both floats and can go through terrain, walls, the player etc. Here is the code that I have.

var PlayerLocation :  Transform;
var AppliedGravity : float = 20;
var Speed : float = 5;

private var CurrentTransform : Transform;
private var Character : CharacterController;

function Start(){
	CurrentTransform = transform;
	Character = GetComponent(CharacterController);
}

function Update(){
	
	if(CharlieDetect.EnemySee){
		animation.Play("Walk");
		transform.position = Vector3.MoveTowards(transform.position, PlayerLocation.transform.position, Speed);
		transform.LookAt(PlayerLocation.transform);
	}
	else{
		animation.Play("ArmatureAction");
	}
}

just add a collider to your zombie

EDIT:
i’d add a rigidbody to the zombie and move him with rigidbody.addforce rather than vector3.movetowards, as translating a object with collider and rigidbody modifying its position can make the collision seem weird and innatural

Hope this helps