Best strategy for AI stalking/chasing movement?

You need a collision sphere around the player to determine the “relevant” trees. Then you need to find trees that are located at the collision boundary (those whose distance from the player, for example, is more than 0.8 of the sphere radius), so that the monster does not immediately run to the player, but keeps its distance. Then FindLookAtRotation(Player position - tree position)->GetForwardVector * (approximately 100-200) + GetWorldLocation of the tree - to determine the point “behind the tree” where the monster can come. Next - choose any point and send the monster there (AIMoveTo), If the player is not looking towards the monster(?).

You can change the size of the tree search collision over time (timeline?), then we will get closer and closer.