Unity script for enemy to follow player



The following script will let an object follow a player when it is within a certain range and will stop following it once it is out of a certain range

The following variables can be adjusted from the Inspector.

Attack Speed = How fast the game object moves
Attack Distance = How close does the player need to be to start moving
Buffer Distance = How far away from the player should the game object stop
Player = Game player to target

To use script, create a new C# script named FollowPlayer and paste in the following.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class FollowPlayer : MonoBehaviour
{

    public float attackSpeed = 4;
    public float attackDistance;
    public float bufferDistance;
    public GameObject player;

    Transform playerTransform;

    void GetPlayerTransform()
    {
        if (player != null)
        {
            playerTransform = player.transform;
        }
        else
        {
            Debug.Log("Player not specified in Inspector");
        }
    }

    // Start is called before the first frame update
    void Start()
    {
        GetPlayerTransform();
    }

    // Update is called once per frame
    void Update()
    {
        var distance = Vector3.Distance(playerTransform.position, transform.position);
        // Debug.Log("Distance to Player" + distance);
        if (distance <= attackDistance)
        {
            if (distance >= bufferDistance)
            {
                transform.position += transform.forward * attackSpeed * Time.deltaTime;
            }
        }
    }
}

Helpful Links

https://forum.unity.com/threads/c-get-transform-of-another-gameobject.177216/
https://docs.unity3d.com/ScriptReference/Vector3.Distance.html

Leave a Reply