Unreal: Taste einer InputAction auslesen (interaction system o.ä.)

Letzte Woche bin ich etwas über die spielerkonfigurierbaren Inputs in UE5 gestolpert. Ich wollte im aktuellen Beispiel ein "interaction system" programmieren. Ähnlich wie bei Skyrim nach dem Motto: der Spieler sieht in Richtung einer Kiste, eines Schalters, whatever und bekommt eingeblendet "drücke Taste xy zum Interagieren". Und die Taste natürlich nicht hardcoded, sondern dynamisch ausgelesen. Hab ich mir etwas einen abgebrochen, die Dokumentation der Unreal Engine war mal wieder mäßig - ich halte hier mal meine Erkenntnisse fest.

Mein Konzept: ich habe ein InteractionWidget, welches sich mehr oder minder selber managed, besteht literally nur aus drei Textelementen und eines davon ist variabel, um den Namen der Taste darzustellen. Ab hier wird es spannend: Die Tasten sind nur auslesbar, wenn eine PlayerMappableInputConfig erstellt wird. Für diese braucht das Blueprint eine Referenz und dann kann man das ganze Auslesen. Hab ich erstmal nur extrem simpel gehalten, muss noch verbessert werden, aber hier mein Blueprint dazu.

Nachtrag: Hier noch ein Grundstein für ein dazu passendes interaction system. Im Tick wird ein LineTrace durchgeführt und auf Gegenstände abgesucht, welche das Interface IInteractible implementieren. Wenn ein solcher Gegenstand vom LineTrace getroffen wird, bekommt dieser ein Overlay Material als Highlight. Außerdem wird das Event OnCanInteract gebroadcastet. Falls im Frame vor dem aktuellen ein passender Gegenstand im LineTrace war, jetzt aber nicht mehr, wird das Overlay Material "gelöscht" bzw. durch einen null pointer ersetzt.

Den Code dazu habe ich wieder in ein Gist geworfen.

EDIT: Ich habe eben gesehen, die PlayerMappableInputConfigs sind nun deprecated. Bei den Input Actions gibt es jetzt "Player Mappable Key Settings", das scheint aber experimental zu sein. Hab ich ein bisschen Bauchschmerzen to be honest. Werde ich mir demnächst noch mal ansehen.