Make a tag appear/follow character

I want to make a GUI button/text that follows or appears next to a character when they get near a certain point to make it clear that they can interact with it. I’ve been trying to do this, but so far have had no luck. The closest I’ve gotten is having the GUI update to somewhat follow the player a bit at the moment, but it defaults to the top left corner of the screen and you can barely notice it’s following him anyway. Here’s my code. Any idea what I need to do to solve this?

using UnityEngine;
using System.Collections;

public class OpenableDoor : MonoBehaviour
{

	public float playerPosX;
	public float playerPosY;

	void OnGUI ()
	{

       playerPosX = GameObject.Find("MaleChar_Anim").transform.position.x;
       playerPosY = GameObject.Find("MaleChar_Anim").transform.position.y;
		
		if (enter) {
			GUI.Label (new Rect (playerPosX, playerPosY, 150, 150), "Press 'E' to open the door");
		}
	}
	
	//Activate the Main function when player is near the door
	void OnTriggerEnter (Collider other)
	{

		if (other.gameObject.tag == "Player") {
			enter = true;
		}

	}

//Deactivate the Main function when player is go away from door
	void OnTriggerExit (Collider other)
	{
		if (other.gameObject.tag == "Player") {
			enter = false;
		}
	}

	
}

GUI uses a different coordinate system to the world coordinates (which the player object uses). To get the correct position you can convert to screen coordinates using
Camera.WorldToScreenPoint.

However, the screen coordinate system has y pointing up (0,0 at bottom left), whereas the GUI coordinate system has y pointing down (0,0 at top left). To get from Screen to GUI coordinates, take away screenPos.y from Screen.height.

Try this:

Vector2 screenPos = Camera.main.WorldToScreenPoint(GameObject.Find("MaleChar_Anim").transform.position);
if (enter) {
  GUI.Label(new Rect(screenPos.x, Screen.height - screenPos.y, 150, 150), "Press 'E' to open the door");
}