Souris et coordonnées d'entrée

À propos

La raison de ce petit tutoriel est d'éclaircir de nombreuses erreurs courantes concernant les coordonnées d'entrée, l'obtention de la position de la souris et la résolution de l'écran, etc.

Coordonnées d'affichage matériel

L'utilisation des coordonnées matérielles est logique dans le cas de l'écriture d'interfaces utilisateur complexes destinées à fonctionner sur PC, telles que des éditeurs, des MMO, des outils, etc. Cependant, cela n'a pas autant de sens en dehors de ce cadre.

Coordonnées d'affichage du viewport

Godot utilise les viewports pour afficher du contenu, et les viewports peuvent être mis à l'échelle par plusieurs options (voir le tutoriel Résolutions multiples). Utilisez ensuite les fonctions dans les nœuds pour obtenir les coordonnées de la souris et la taille de la fenêtre, par exemple :

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_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: ", GetViewportRect().Size);
}

Il est également possible de demander au viewport la position de la souris :

get_viewport().get_mouse_position()
GetViewport().GetMousePosition();

Note

Quand le mode de la souris est réglé sur Input.MOUSE_MODE_CAPTURED, la valeur event.position de InputEventMouseMotion est le centre de l'écran. Utilisez event.relative au lieu de event.position et event.speed pour traiter les mouvements de la souris et les changements de position.