Up to date
This page is up to date for Godot 4.2
.
If you still find outdated information, please open an issue.
Mouse y coordenadas de entrada¶
Acerca de¶
El objetivo de este pequeño tutorial es evitar errores comunes sobre coordenadas de entrada, obtención de posiciones en relación a mouse y resolución, etc.
Coordenadas de pantalla basadas en hardware¶
La utilización de coordenadas de hardware tiene sentido en el caso de escribir interfaces de usuario complejas que deben funcionar en PC, como editores, MMOs, herramientas, etc. No tiene mucho sentido utilizarlas fuera de este ámbito.
Coordenadas de pantalla de Viewport¶
Godot utiliza Viewports para mostrar contenido y estos pueden ser escalados con diversas opciones (ver tutorial Múltiples resoluciones). A continuación, se utilizan las funciones de los nodos para obtener, por ejemplo, las coordenadas del ratón y el tamaño del viewport:
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);
}
También es posible preguntar al viewport por la posición del mouse:
get_viewport().get_mouse_position()
GetViewport().GetMousePosition();
Nota
When the mouse mode is set to Input.MOUSE_MODE_CAPTURED
, the event.position
value from InputEventMouseMotion
is the center of the screen. Use event.relative
instead of event.position
and event.velocity
to process mouse movement and position changes.