Checking to see how many times a button was pressed in a certain amount of time?

I’m working on a fairly simple Hide & Seek game. In the game when a person that is hiding comes out to run to another hiding place, I want the player to try and tag them. When the player is close to the person, I want them to start tapping a button to get even closer and tag them. The button tapping should pull the player in closer or push them back depending on how fast the button is pressed.

I’m using a square (Player) and a triangle (NPC) to test this out. The triangle would be moving from waypoint to waypoint. While the triangle is in the middle of advancing, and when I am close to it, it will run away. If I get close enough, I want the player to start tapping a button in a certain amount of time to ‘tag’ the triangle.

Would I start with a OnTriggerEnter/OnTriggerExit? I am sort of new to scripting and I see a lot of people doing things differently as far as techniques go. Would really appreciate some feedback. Thanks!

OnTriggerEnter is a good start. Have it register collisions with a trigger collider that is on the triangle, but much larger so it encompasses the are that the player should be made to push the button.
If a collision is registered, set a bool “nearTarget” to true. Use OnTriggerExit to set it it false again.
In Update(), if nearTarget is true, check for button presses, and keep track of the time between two presses with Time.deltaTime. Something like this:

public bool nearTarget = false;
public float timeThreshold = 0.5f;
public float lastButtonPress;
public int buttonCount = 0;
public int buttonCountThreshold = 5;

OnTriggerEnter(Collider other) {
     nearTarget = true;
     lastButtonPress = Time.time;
     buttonCount = 0;
}

OnTriggerExit(Collider other) {
     nearTarget = false;
}

Update() {
     if(nearTarget == true) {
          if(Input.GetKeyDown(KeyCode.E)) {
               if(Time.time - lastButtonPress < timeThreshold) {
                    lastButtonPress = Time.time;
                    buttonCount ++;
                    if(buttonCount >= buttonCountThreshold) {
                        //TAG!
                    }
               }
               else {
                    buttonCount = 0;
               }
          }
     }
}

public bool canTag = false;

  void update()
   {
         if(canTag && Input.GetKeyUp(Keycode.E))
          {
              print("Tagged!");
          }
  }

  void OnTriggerEnter(Collider other)
  {
        if(other.collider.tag == "Player")
        {
              canTag = true;
              print ("You are near this person.");
        }
  }

 void OnTriggerExit(Collider other)
  {
        if(other.collider.tag == "Player")
        {
              canTag = false;
              print ("Too Far!.");
        }
              
  }