How to make a gameObject follow a player

Hi, so I’m making a zombie survival game (Original, I know :wink: ) and I want to make some AI, I thought an easy way for stopping the zombies from clipping through things and getting stuck would to be to follow my players footsteps, by dropping an invisible waypoint every half a second that a zombie follows.
I would love someone to help me out with dropping waypoints and making a gameObject (Zombie) follow them, or link me to another post if this has already been answered, but I couldn’t find anything :frowning:

Thanks, Anthony.

Add this to the zombie(s):

//You may consider adding a rigid body to the zombie for accurate physics simulation
private GameObject wayPoint;

private Vector3 wayPointPos;

//This will be the zombie's speed. Adjust as necessary.
private float speed = 6.0f;

void Start ()
{
     //At the start of the game, the zombies will find the gameobject called wayPoint.
     wayPoint = GameObject.Find("wayPoint");
}

void Update ()
{
     wayPointPos = new Vector3(wayPoint.transform.position.x, transform.position.y, wayPoint.transform.position.z);
     //Here, the zombie's will follow the waypoint.
     transform.position = Vector3.MoveTowards(transform.position, wayPointPos, speed * Time.deltaTime);
}

Add this to the player:

//In the editor, add your wayPoint gameobject to the script.
public GameObject wayPoint;

//This is how often your waypoint's position will update to the player's position
private float timer = 0.5f;

void Update ()
{
     if(timer > 0)
     {
          timer -= Time.deltaTime;
     }
     if(timer <= 0)
     {
          //The position of the waypoint will update to the player's position
          UpdatePosition();
          timer = 0.5f;
     }
}

void UpdatePosition()
{
     //The wayPoint's position will now be the player's current position.
     wayPoint.transform.position = transform.position;
}

Now, create an empty gameobject and make its position equal to the player’s position, however, do NOT parent it. Name the empty gameobject “wayPoint”. Within the editor, add the waypoint to the player. Be aware that this is a VERY basic script.