滑鼠和輸入座標
關於
這個小教學旨在理清許多關於輸入座標、獲取滑鼠位置和螢幕解析度等的常見錯誤。
硬體顯示座標
使用硬體座標在編寫要在 PC 上運作的複雜 UI 時是有意義的,比如編輯器、網路遊戲、工具等。然而,在這個範圍之外,它就沒有那麼大的意義了。
視口顯示座標
Godot 使用視口(Viewport)顯示內容,並且視口可以通過若干選項進行縮放(參見 多重解析度 教學)。然後,使用節點中的函式來獲得滑鼠座標和視口大小,例如:
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);
}
另外,也可以從視口查詢滑鼠的座標:
get_viewport().get_mouse_position()
GetViewport().GetMousePosition();
備註
當滑鼠模式設定為 Input.MOUSE_MODE_CAPTURED 時,來自 InputEventMouseMotion 的 event.position 值是螢幕的中心。請改用 event.relative 和 event.velocity 來處理滑鼠移動和位置變更,而非 event.position。