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.

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)

Como alternativa, é possível solicitar à viewport a posição do mouse:

get_viewport().get_mouse_position()

Nota

Quando o modo do mouse está definido como Input.MOUSE_MODE_CAPTURED, o valor de event.position de InputEventMouseMotion é o centro da tela. Use event.relative em vez de event.position e event.velocity para processar o movimento do mouse e as mudanças de posição.

Ao implementar recursos como visão com o mouse (mouselook), recomenda-se usar event.screen_relative e event.screen_velocity em vez de event.relative e event.velocity para que o movimento do mouse se comporte da mesma forma em múltiplas resoluções.