Make an enemy only rotate with navmesh agent

Hi, I’m trying to make a FPS where an enemy has a minigun and i want him to chase you but then stop and rotate towards the player to shoot, then run again. I got the chasing part down but not the stopping and shooting part. for all the enemies I’ve created, I’ve been using the navmesh agent set destination to move the enemy towards the player, and I want to see if I can do the same with the minigun enemy.

I did it in one of my games by turning off updatePosition while it rotated to the next waypoint, and then re-enabling updatePosition once the agent had rotated to face the new target.

Here is a working example, could probably be optimised a bit. Put this script on an object with a NavMeshAgent, and populate the targets array with your waypoints.

using UnityEngine;
using System.Collections;

public class NavMeshFollower : MonoBehaviour {
	[SerializeField] Transform[] targets;
	int index = 0;
	NavMeshAgent agent;
	// Use this for initialization
	void Start () {
		agent = GetComponent<NavMeshAgent>();
	// Update is called once per frame
	void Update () {
		if(agent.hasPath && agent.remainingDistance<0.5f) // Reached target?
			agent.updatePosition = false;

	IEnumerator GetNextTarget()
		index = (int)Mathf.Repeat(++index,targets.Length); // Get next target point from array
		var targetPos = targets[index].position; //Cache new target point
		var agentPos = agent.transform.position; // Cache agent position
		agent.SetDestination(targets[index].position); // Tell the agent where to look

		var VecToTarget = targetPos - agentPos; // Calculate a vector from current agent position to new target

		while(Vector3.Dot(VecToTarget.normalized,agent.transform.forward.normalized)<0.99f) // Check if agent is pointing to new target, and wait while it isn't
			yield return null;

		agent.Warp(agentPos); // Reset agent position
		agent.SetDestination(targetPos); // Reset agent target
		agent.updatePosition = true; // Off we go!