Comportamientos de dirección: ¿cómo huir y luego regresar hacia el cazador?

Implementé un comportamiento de dirección Wander and Huir y funciona así:

Cuando la entidad no es perseguida por nada vagabundea. Pero cuando es cazado por el jugador huirá del jugador a una velocidad creciente. Esto es como una mariposa que huye rápidamente.

Pero ahora quiero cambiar su comportamiento. De modo que cuando la entidad es cazada por el jugador, huye al principio. Pero si el jugador sigue persiguiendo a la entidad, irá hacia el jugador a una velocidad más lenta para que el jugador pueda atrapar a la entidad. En mi implementación anterior, el jugador no puede atrapar a la entidad porque la entidad siempre tiene una fuerza de fuga si el jugador se acerca.

¿Puedo simplemente disminuir la fuerza que huye con el time? Pero esto todavía no puede garantizar que la entidad sea atrapable y hará que el jugador sienta que la entidad no se está moviendo.

Podría comenzar a disminuir la fuerza de huida tan pronto como exceda un valor establecido y luego reiniciarla cuando la distancia desde el jugador comience a boost.

pseudo-código

if(fleeingforce greater than X) beingchased is true previousdistance from player = length(player.xyz - self.xyz) if(beingchased is true) if fleeingforce > minfleeingforce decrease fleeingforce if(distance from player is greater than previousdistance) beingchased is false