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...
Mouse and input coordinates
Informazioni
Lo scopo di questo breve tutorial è chiarire molti errori comuni che riguardano le coordinate di input, ricavare la posizione del mouse e la risoluzione dello schermo, ecc.
Hardware display coordinates
L'utilizzo delle coordinate hardware ha senso nel caso di interfacce utente complesse destinate a funzionare su PC, come editor, MMO, tool, ecc. Non ha altrettanto senso oltre questo contesto.
Viewport display coordinates
Godot utilizza le viewport per visualizzare i contenuti e le viewport si possono ridimensionare tramite diverse opzioni (consultare il tutorial Risoluzioni multiple). Utilizzare quindi le funzioni nei nodi per ottenere le coordinate del mouse e le dimensioni della viewport, ad esempio:
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);
}
Alternativamente, è possibile richiedere alla viewport la posizione del mouse:
get_viewport().get_mouse_position()
GetViewport().GetMousePosition();
Nota
Quando la modalità del mouse è impostata su Input.MOUSE_MODE_CAPTURED, il valore event.position di InputEventMouseMotion corrisponde al centro dello schermo. Utilizzare event.relative al posto di event.position e event.velocity per elaborare il movimento del mouse e i cambiamenti di posizione.
Quando si implementano funzionalità come lo sguardo con il mouse, si consiglia di utilizzare event.screen_relative e event.screen_velocity al posto di event.relative e event.velocity in modo che il movimento del mouse si comporti allo stesso modo su diverse risoluzioni.