Up to date
This page is up to date for Godot 4.2
.
If you still find outdated information, please open an issue.
Mouse e coordenadas de entrada¶
Sobre¶
A razão para este pequeno tutorial é esclarecer muitos erros comuns sobre coordenadas de entrada, obtenção da posição do mouse e resolução da tela, etc.
Coordenadas de exibição de hardware¶
O uso de coordenadas de hardware faz sentido no caso de escrever UIs complexas destinadas a rodar no PC, como editores, MMOs, ferramentas, etc. No entanto, não faz tanto sentido fora desse escopo.
Coordenadas de exibição da janela de visualização¶
Godot usa janelas de exibição para exibir conteúdo, e as viewports podem ser dimensionadas por várias opções (consulte o tutorial Resoluções múltiplas). Utilize, então, as funções em nós para obter as coordenadas do mouse e o tamanho do viewport, por exemplo:
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);
}
Como alternativa, é possível solicitar à viewport a posição do 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.