Follow nearest target/Follow By tag

well i am trying to make an enemy follow all players on multiplayer but i have a problem, it follows only one player i want to make it to follow the player that is more near to the enemy and not make a variable but follow it by tag but i don’t know how to do it! :frowning:

Here is my script :

#pragma strict
var target : Transform;
var myTransform : Transform;
var moveSpeed = 2.0;
var canSeePlayer = 0;

function Update () 
{	
	// Distance Between Enemy and Player
	var dist = (target.position - myTransform.position).magnitude;
	
	// Print Distance
	Debug.Log(dist);

	if(dist <= 30)
	{
		transform.LookAt(target);
		myTransform.position += myTransform.forward * moveSpeed * Time.deltaTime;	
	}
	if(dist <= 15)
	{
		moveSpeed = 3;
		
		transform.LookAt(target);
		myTransform.position += myTransform.forward * moveSpeed * Time.deltaTime;	
	}
	if(dist >= 30)
	{
		moveSpeed = 2;
		
		transform.LookAt(target);
		myTransform.position += myTransform.forward * moveSpeed * Time.deltaTime;	
	}
}

Look into the function GameObject.FindGameObjectsWithTag(). This return you a list of gameobjects of a given tag string. Use the returned list to find the closest player to the enemy using the existing Vector3.Distance() function.

Something like this:

GameObject [] players = GameObject.FindGameObjectsWithTag();
float shortestDist = float.MaxValue;
for( int i = 0; i < players.Length; i++ ) {
	float dist = Vector3.Distance( this.transform.position, players[i].transform.position );
	if( dist < shortestDist ) {
		target = players[i].transform;
		shortestDist = dist;
	}
}