Attention: Here be dragons
This is the latest
(unstable) version of this documentation, which may document features
not available in or compatible with released stable versions of Godot.
Checking the stable version of the documentation...
Maus- und Eingabe-Koordinaten
Über
Das Ziel dieses kleinen Tutorial ist es, viele häufige Irrtümer über Eingabekoordinaten, Mausposition und Bildschirmauflösung etc. auszuräumen.
Hardware-Anzeigekoordinaten
Die Verwendung von Hardwarekoordinaten ist sinnvoll, wenn komplexe Benutzeroberflächen geschrieben und auf einem PC ausgeführt werden sollen, z.B. Editoren, MMOs, Tools usw. Außerhalb dieses Anwendungsbereichs ist dies jedoch weniger sinnvoll.
Anzeigekoordinaten des Viewports
Godot verwendet Viewports zum Anzeigen von Inhalten, und diese können durch verschiedene Optionen skaliert werden (siehe Mehrere Auflösungen). Verwenden Sie dann die Funktionen im Node, um die Mauskoordinaten und die Größe des Viewports zu erhalten, zum Beispiel:
func _input(event):
# Mouse in viewport coordinates.
if event is InputEventMouseButton:
print("Mouse Click/Unclick at: ", event.position)
elif event is InputEventMouseMotion:
print("Mouse Motion at: ", event.position)
# Print the size of the viewport.
print("Viewport Resolution is: ", get_viewport().get_visible_rect().size)
public override void _Input(InputEvent @event)
{
// Mouse in viewport coordinates.
if (@event is InputEventMouseButton eventMouseButton)
GD.Print("Mouse Click/Unclick at: ", eventMouseButton.Position);
else if (@event is InputEventMouseMotion eventMouseMotion)
GD.Print("Mouse Motion at: ", eventMouseMotion.Position);
// Print the size of the viewport.
GD.Print("Viewport Resolution is: ", GetViewport().GetVisibleRect().Size);
}
Alternativ können Sie den Viewport nach der Mausposition fragen:
get_viewport().get_mouse_position()
GetViewport().GetMousePosition();
Bemerkung
Wenn der Mausmodus auf Input.MOUSE_MODE_CAPTURED
gesetzt ist, ist der event.position
-Wert von InputEventMouseMotion
die Mitte des Bildschirms. Verwenden Sie event.relative
anstelle von event.position
und event.velocity
, um Mausbewegungen und Positionsänderungen zu verarbeiten.