====== Aktionen ======
Ü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")
===== Eigene Aktionen hinzufügen =====
Ü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.
{{:godot:editor:projekteinstellungen_eingabe.png}}
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")
===== per Skript =====
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//