How can I make a gun laser sight visible when aiming without affecting the other guns in play?

Hi guys,

I have created a static mesh with a hologram material on my FP_Gun’s muzzle socket to make a laser pointer for my character’s gun. So far everything is cool, but I want to make it only visible when I aim kinda like resident evil. Problem is, the only way I managed to do this was to cast to my BP_Character and check if he is aiming

, it works but also affect my NPCs, which is obviously not cool. Is there a different way I could make this work in order to have my LaserSight only visible when I aim and the NPCs’ always visible, except when IsDead is checked?

Can you access your gun from a character? I.e. how your gun was spawned? If it’s accessible you can just toggle on\off your laser sight from the character when he is aiming.

That’s what I tried but can’t seem to cast to BP_Gun properly in my BP_Character because I can’ get the reference to the gun (or I don’t do it the right way). My Gun is spawned on BeginPlay in C++ (my game is an hybrid C++/BP) maybe if I get the reference there I could make it visible in my AI.cpp and make the toggle in my Player.cpp. My bFocus bool is created in my Character.cpp.

UPROPERTY of ActorComponent type is usually visible as a component in blueprint. UPROPERTY(BlueprintReadOnly) or UPROPERTY(BlueprintReadWrite) usually visible inside blueprints. Also you can create a UFUNCTION(BlueprintCallable) AGunActor* GetGun(); which will return your gun reference to the blueprint.

I had one but weirdly in the camera category. I managed to make everything work by creating a function LaserSightVisibility and calling it on Tick. Then, because my NPCs are always on IsAiming by default, I just had to set it to false on my KillAI function.

Thanks for the help!!