How do i change this script to chase the closest target?

I’ve been having a lot of trouble on this, this script is on an enemy prefab in my multiplayer game i’m making. I didn’t make the script so i’m having some trouble, would anyone be kind enough to edit this to chase the closest target(player)? Thanks, i would really appreciate it :smiley:

var target : Transform; //the enemy's target
var moveSpeed = 3; //move speed
var rotationSpeed = 3; //speed of turning
var attackRange = 3; // distance within which to attack
var chaseRange = 10; // distance within which to start chasing
var giveUpRange = 20; // distance beyond which AI gives up
var attackRepeatTime : float = 1.5; // delay between attacks when within range
var anim : GameObject;
var maximumHitPoints = 5.0;
var hitPoints = 5.0;
var attack : AudioClip;
private var chasing = false;
private var attackTime : float;
var checkRay : boolean = false;
var idleAnim : String = "idle";
var walkAnim : String = "walk";
var attackAnim : String = "attack"; 
var dontComeCloserRange : int = 4;

private var myTransform : Transform; //current transform data of this enemy

function Awake(){
    myTransform = transform; //cache transform data for easy access/preformance
	anim.animation.wrapMode = WrapMode.Loop;
	anim.animation[attackAnim].wrapMode = WrapMode.Once;
	anim.animation[attackAnim].layer = 2;
	anim.animation.Stop();
}

function Start(){
	target = GameObject.FindWithTag("Player").transform;
}

function Update () {
	target = GameObject.FindWithTag("Player").transform;
    // check distance to target every frame:
    var distance = (target.position - myTransform.position).magnitude;
	
	if (distance < dontComeCloserRange){
			moveSpeed = 0;
			
			anim.animation[idleAnim].speed = .4;
			anim.animation.CrossFade(idleAnim);
		}else{
			moveSpeed = Random.Range(4, 6);
			anim.animation.CrossFade(walkAnim);
		}
	
	if (chasing) {	
		//move towards the player
		myTransform.position += myTransform.forward * moveSpeed * Time.deltaTime;
		

        //rotate to look at the player
        myTransform.rotation = Quaternion.Slerp(myTransform.rotation, Quaternion.LookRotation(target.position - myTransform.position), rotationSpeed*Time.deltaTime);
		transform.eulerAngles = Vector3(0, transform.eulerAngles.y, 0); 

        // give up, if too far away from target:
        if (distance > giveUpRange) {
            chasing = false;
        }

        // attack, if close enough, and if time is OK:
        if (distance < attackRange && Time.time > attackTime) {
			anim.animation[attackAnim].speed = 2.0;
            anim.animation.CrossFade(attackAnim);
            target.SendMessage( "PlayerDamage", maximumHitPoints);
            attackTime = Time.time + attackRepeatTime;
			audio.PlayOneShot(attack, 1.0 / audio.volume);
        }

    } else {
        // not currently chasing.
		anim.animation[idleAnim].speed = .4;
		anim.animation.CrossFade(idleAnim);
        // start chasing if target comes close enough
        if (distance < chaseRange) {
            chasing = true;
        }
    }
}


function OnDrawGizmosSelected (){
	Gizmos.color = Color.yellow;
	Gizmos.DrawWireSphere (transform.position, attackRange);
	Gizmos.color = Color.red;
	Gizmos.DrawWireSphere (transform.position, chaseRange);
}

See the FindClosestEnemy() function on this page from Unity documentation about GameObject.FindGameObjectsWithTag

I’m putting the same code here also for your reference:

using UnityEngine;
using System.Collections;

public class Example : MonoBehaviour {
    GameObject FindClosestEnemy() {
        GameObject[] gos;
        gos = GameObject.FindGameObjectsWithTag("Enemy");
        GameObject closest;
        float distance = Mathf.Infinity;
        Vector3 position = transform.position;
        foreach (GameObject go in gos) {
            Vector3 diff = go.transform.position - position;
            float curDistance = diff.sqrMagnitude;
            if (curDistance < distance) {
                closest = go;
                distance = curDistance;
            }
        }
        return closest;
    }
    void Example() {
        print(FindClosestEnemy().name);
    }
}

Use the above code to understand the working and implement it in your code.
Rather than giving you the fish, I am teaching you how to fish. :wink: