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...
Myš a souřadnice vstupu
Úvod
Důvodem tohoto malého tutoriálu je objasnění mnoha běžných chyb ohledně souřadnic vstupu, získání polohy myši, rozlišení obrazovky a podobně.
Hardwarové souřadnice displeje
Použití hardwarových souřadnic má smysl, když píšete složitá uživatelská rozhraní určená k použití na PC, jako jsou editory, MMO, nástroje a podobně. Mimo toto však až takový smysl nedává.
Souřadnice zobrazení průzoru
Godot používá k zobrazení obsahu průzory. Průzory lze škálovat několika způsoby (viz návod Multiple resolutions). Proto k získání souřadnic myši a velikosti výřezu používejte funkce v uzlech, například:
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);
}
Případně je možné požádat o pozici myši samotný průzor:
get_viewport().get_mouse_position()
GetViewport().GetMousePosition();
Poznámka
Když je režim myši nastaven na Input.MOUSE_MODE_CAPTURED ("zachycený"), hodnota event.position ("poloha události") z InputEventMouseMotion ("vstupní událost pohybu myši") je středem obrazovky. Ke zpracování pohybu myši a změn polohy použijte namísto event.position a event.velocity ("rychlost") vlastnost event.relative ("relativní").
When implementing features such as mouselook, it's recommended to use
event.screen_relative and event.screen_velocity instead of event.relative
and event.velocity so that mouse movement behaves the same across
multiple resolutions.