Show world space widget for specific player only in Split-screen?

Is it possible to draw 3D / worldspace widgets for a certain player only - working on a split-screen game. I’m trying to achieve something similar to the name tags in Rocket League, but I can’t just go ahead and add a World space widget component to each of my 4 players.

The two problems I’m facing:

  1. Each player would see their own nametag above their own character.
  2. Name tags of the other players should face the camera, but since I have essentially multiple cameras on the screen (4 player split-screen) I obviously have a problem.

I’ve seen this post https://forums.unrealengine.com/development-discussion/blueprint-visual-scripting/1377335-setting-visibility-for-more-than-one-player-owner-at-a-timeand from what it sounds like the OP did exactly what I want to achieve.

Eyo,

I might be able to help out with the second question.
When you use split-screen, as you mentioned, you basically create a camera for each player. You should be able to access that camera by getting the specific players’ PlayerController->CameraManager.
So when you create the widget, make sure it faces the specific players->playercontroller->“CameraLocation”.

Could you not achieve nr.1 using " **Add-To-Player-Screen" **As they mention in the forum link you sent?

Hey, thanks for the replies. I fixed my issue in another way. With creating multiple screen space widget components on each character and “assign” each player to one of those widgets.

Yes I can do that, though every player would still see the other 3D widgets above each character’s head, rotated wrongly (towards the other cameras).

I could not find a way to to add a 3D widgets to player screen, since it’s a widget actor component on my character, but I might be missing something since I’m not that far into UE yet.

It’s a bit late, but I’ve found the answer. You must do it in C++. The general idea is for each widget component in your game, it only visible for the first local player (index 0). That’s Unreal idea. So to show them seperately, you will have to spawn that WidgetComponent N - 1 times (N stands for the number of local players) and assign those duplicates with the corresponding ULocalPlayer through the SetPlayerOwner function. Then it should be visible only for that local player.

You can create an actor component, to scan through the owner, get every UWidgetComponent and clone them, assign and store them somewhere in that component to access later.