Stalker

                Never    
C#
       
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.AI;

public class Stalker : MonoBehaviour {

    public GameObject victim;
    public float radius;
    public float ratio;

    [Range(0, 1)]
    public float leeway; 
    NavMeshAgent nma;

	// Use this for initialization
	void Start () {
        nma = GetComponent<NavMeshAgent>();
	}
	
	// Update is called once per frame
	void Update () {



        Debug.DrawLine(transform.position, transform.position + Vector3.forward * radius, Color.red);
        Debug.DrawLine(transform.position, transform.position + Vector3.back * radius, Color.red);
        Debug.DrawLine(transform.position, transform.position + Vector3.right * radius, Color.red);
        Debug.DrawLine(transform.position, transform.position + Vector3.left * radius, Color.red);


        float distance = Vector3.Distance(transform.position, victim.transform.position);

        ratio = radius/distance;

        Vector3 dir = victim.transform.position - transform.position;


        Vector3 desiredPosition = dir.normalized * radius +transform.position;

        if (ratio > 1)
        {
            desiredPosition = -desiredPosition * Mathf.Abs(ratio - 1);
        }
        else if(ratio<leeway)
        {

        }

            nma.SetDestination(desiredPosition);

        Debug.DrawLine(transform.position, victim.transform.position, Color.blue);
        Debug.DrawLine(transform.position, transform.position+dir.normalized, Color.black,10);
        Debug.DrawLine(transform.position, desiredPosition, Color.green);




	}
}

Raw Text