|Attention||Topic was automatically imported from the old Question2Answer platform.|
func _input(event): if event is InputEventMouseMotion: print("viewport.size.x: %s" % get_viewport().size.x) print("viewport.mouse.x: %s" % get_viewport().get_mouse_position().x)
If I play a scene with the mentioned code running, and I move my mouse as far as I can to the right of the game window, this is the console output I get:
viewport.size.x: 2560 viewport.mouse.x: 1919.249878
As you can see, the mouse position doesn’t approximate the viewport’s apparent size when it’s all the way to the right edge of the screen. This is a problem for me, since I want to know how close the mouse is to the right edge of the game screen.
I’m assuming this might have something to do with the font/app scaling in Windows and how Godot calculates viewport mouse position. Also, using
get_global_mouse_position().x has the same problem and gives the same outputs when the ingame camera is placed with it’s top left corner at the world origin.
I just ran this on a test project and I couldn’t duplicate, the mouse position and viewport size married perfectly.
OS.get_window_size() got me the same result too.
Try to isolate the issue, make a fresh test project and see if you get the same issue. Sorry I can’t be more help, very strange issue.
DaddyMonster | 2022-01-10 10:58
Try how does it works fullscreen and windowed.
Experiment with get_viewport().get_visible_rect()
Inces | 2022-01-10 16:47
Hi, I figured out where things goes wrong when I tried recreating the issue.
It seems that setting the Stretch Mode to 2D in Project Settings
display/window/stretch/mode causes the problem.
You need to set a different test width and height for your window in project settings than your default window size, or resize the game window manually, then the problem will appear.
VastView | 2022-01-10 19:15
I still don’t know why the problem exists and how to fix it.
For now I did a workaround by having an invisible Control node positioned at the bottom right of the screen, and reading it’s position to get the current screen width.
VastView | 2022-01-17 00:42