It might be possible to use roblox’s ProximityPrompt object with a custom gui, but from what I see it tweens between the most relevant object, which I’m not sure the default Proximity Prompt has a signal for.
Thus a conclusion I see as viable is they use CollectionService on the objects that require a prompt, with an attribute saying what keycode to use for the prompt, and then tween a gui to the object closest to the center of the screen.