Enemy to Follow Player

From a glance your code looks good, and should give you the behavior your after. Got a basic state machine, distance check, calculate the velocity correctly.

Is the issue just to follow for a period? Keep some variable (whether distance or time) and increment as @reiti.net suggests, and change back to idle state after some threshold.

I see you didn’t calculate the distance but its basically the same as the velocity above, would be Math.Abs(playerPos - targetPos) or can calculate euclidean distance for whatever dimension vector.