2017-07-06 5 views
0

mehrere Funktionen hinzufügen Ich versuche, einen Knopfknoten in godot zwei verschiedene Funktionen hinzufügen. Ich möchte, dass beim Klicken eine Nachricht angezeigt wird und das Sprite, an das es angehängt ist, beim Klicken mit der rechten Maustaste verschwindet. Gibt es eine Möglichkeit, dies in gscript zu tun?gibt es eine Möglichkeit, einen Knopf Knoten in Godot

Antwort

0

Ich bin mir nicht sicher, ob Sie mit der Button-Klasse zwischen einem Linksklick und einem Rechtsklick unterscheiden können. Es gibt jedoch mehrere einfache Möglichkeiten, das Sprite so reagieren zu lassen, wie Sie es möchten.

Ich bin mir nicht sicher, ob Sie den Button nur als Bereich hinzugefügt haben, der nach einem Klick reagiert. Wenn dies der Fall ist, können Sie Ihrem Sprite auch eine Area2D (oder 3d) und eine Kollisionsform hinzufügen. Mit der Kollisionsform können Sie das "input_event" -Signal des Area2D-Knotens mit dem Sprite-Skript (oder dem Skript, das Sie in dieser Szene verwenden) verknüpfen. Der einfachste Weg, das Signal zu verknüpfen, ist über das Signal-Ribbon auf der unteren linken Seite des Editors.

Der Editor erstellt automatisch eine neue Funktion und Sie können Code, was Verhalten Sie wollen:

func _on_Area2D_input_event(viewport, event, shape_idx):  
    if event.is_action('left_click'): 
     print("Left click message") 
    elif event.is_action('right_click'): 
     self.hide() # hides the node which owns the script... 

Bevor Sie die is_action Funktion, die Sie definieren können, um ‚left_click‘ und ‚RIGHT_CLICK‘ zur Eingangskarte unter Voreinstellungen des Editors. Im Allgemeinen ist es immer eine gute Idee, die Eingabe-Map zu verwenden, anstatt alle Tasten und Schaltflächen hart zu codieren.

Ich hoffe, dass hilft.

Mit freundlichen Grüßen und glücklich Codierung.

+0

Ich denke, diese Idee würde besser funktionieren als das, was ich tat, aber die 'event.is_action' gibt einen Fehler aus, der besagt, dass sie den Bezeichner "event" nicht finden kann. Ich frage mich, ob ich eine seltsame Version von Godot habe, weil ich das in Foren gesehen habe, aber es hat nie für mich funktioniert:/ –

+0

Es ist schwierig, das Problem zu nageln, ohne den Code zu sehen. Könntest du ein paar Schnipsel posten? Das Ereignis "Bezeichner" ist ein Argument der Funktion _on_Area2D_input_event. Wie hast du die Funktion erstellt? Haben Sie den Godot-Editor benutzt oder haben Sie einfach die Funktion in das Skript eingegeben? Wenn Sie denken, dass Sie eine schlechte Godot-Version haben, laden Sie einfach eine neue (die aktuelle Version 2.1.3) herunter und versuchen Sie es erneut. – magenulcus

Verwandte Themen