How to make objects initially invisible and visible when they're detected

Hi. I’am trying to make submarine game, working in UPBGE 0.3. I want to create some kind of echolocation system to detect enemies. Enemies should be first invisible to player. I can’t understand how to make them invisible and make appear when they detected. Can someone help and give any advice how to do this?

Like this?

Video Demonstration

Code Snippet

import bpy

LAST_DETECTED = []

def enemy_detected(self):
    
    # Detected enemy
    if self.sensors["Collision"].hitObjectList != "":
        for o in self.sensors["Collision"].hitObjectList:
            o.visible = True
            LAST_DETECTED.append(o)
    # Reset when enemy no longer detected
    if self.sensors["Collision"].status == 3:
        for o in LAST_DETECTED:
            o.visible = False
        LAST_DETECTED.clear()

Blend

UPBGE_03_Echolocation.blend (138.6 KB)

Well, that’s not the thing I want.
I’ll try to explain. I want it to be 3d and work same as real hydrolocation. Player activate radar - some kind of “ray” or “cone” goes to chosen direction (in 3d) from submarine/character that doesn’t move. When “ray/cone” meets invisible object it becomes visible to player.

So you want the character to be still an create an object that expands at some speed like radar? You can create an object and put it in a different layer and then create a keyboard sensor and an edit object actuator to add that object, a sphere or cone or whatever, when you press a key. The object will have an always sensor and a python controller. And then in python you can set the rate at which the object will scale. Not sure what the script is for scaling an object but i know it can be done. If you need one I can look through my files for one.
Then you just need a collision sensor on the objects you are toggling the visibility of to interact with a property value of the radar object and a visibility actuator.