Über Menü(Projekt) ⇒ Menüpunkt(Projekteinstellung) ⇒ Reiter(Eingabe Zuordnung) sind folgende Ereignisse definiert.
ui_accept | [Return] | |
ui_select | [Space] | |
ui_cancel | [ESC] | Beendet die Godotanwendung |
ui_focus_next | [TAB] | |
ui_focus_prev | [Shift] + [TAB] | |
ui_left | [Cursortaste links] | |
ui_right | [Cursortaste rechts] | |
ui_up | [Cursortaste hoch] | |
ui_down | [Cursortaste runter] | |
ui_page_up | [Bild hoch] | |
ui_page_down | [Bild runter] | |
ui_home | [Pos 1] | |
ui_end | [Ende] |
Die jeweiligen Zuweisungen können wir erweitertern oder abändern. Das folgende Skript zeigt auf, wie wir die Aktion überwachen und darauf reagieren können.
func _input(event): if event.is_action_pressed("ui_left"): print("die zugewiesene Taste für Links ist gedrückt worden")
Über Menü(Projekt) ⇒ Menüpunkt(Projekteinstellung) ⇒ Reiter(Eingabe Zuordnung) können wir eigene Ereignisse definieren. Sowohl die Tastatur, die Maus oder der Joystick können hierbei als Auslöser dienen. Hierzu vergeben wir im Eingabefeld(Aktion) einen Namen welcher mit Return oder dem Button(Hinzufügen) bestätigt wird.
Am Ende der Liste wird dieses Ereignis nun angezeigt. Mit dem Button(+) auf der linken Seite können wir entsprechende Ereignisse hinzufügen. In dem Dialogfenster wählen wir das Eingabemedium aus und müssen dann die entsprechende Taste drücken.
Wird künftig das Projekt gestartet und am Eingabemedium wird diese Taste gedrückt, können wir über folgende Skriptzeile, den von uns bestimmten Aktionsnamen abfragen:
func _input(event): if event.is_action_pressed("SpielerNachOben"): print("SpielerNachOben")
Die Erzeugung einer Aktion ist auch per Skript möglich:
var iek = InputEventKey.new() func _ready(): # zunächst prüfen ob die Aktion schon vorhanden ist if !InputMap.has_action("dummi_aktion"): # Taste zuweisen iek.scancode = KEY_T # Aktion hinzufügen InputMap.add_action("dummi_aktion") # der Aktion ein Event zuweisen InputMap.action_add_event("dummi_aktion", iek)
Bei der Einrichtung mehrerer Aktionen, kann dieses Skript helfen:
func initKeymap(): var keymap = { "move_left" : KEY_A, "move_right" : KEY_D, "move_forward" : KEY_W, "move_backward" : KEY_S, "move_sprint" : KEY_SHIFT, "move_jump" : KEY_SPACE, "change_fly" : KEY_T, "crouch" : KEY_C, "interact" : KEY_E, } for action in keymap: InputMap.add_action(action) var ev = InputEventKey.new() ev.scancode = keymap[action] InputMap.action_add_event(action, ev)
— windy – 18.09.2019