SFML 鼠标 getPosition 无法正常工作

SFML mouse getPosition not working properly

我正在尝试让我的光标精灵出现在我的鼠标光标上方,但由于某种原因它没有出现在鼠标光标上方。

代码:

cursorSprite.setPosition(sf::Mouse::getPosition().x, sf::Mouse::getPosition().y);

如您所见,我只是对精灵使用 setPosition(),并将其设置在鼠标的 x 和 y 位置。但是,这不起作用,光标精灵出现在与我的实际鼠标光标位置不同的位置。

为什么?这可能与我设置 window 的方式有关吗?

window(sf::VideoMode(800, 600, 32), "SFML Test", sf::Style::Default)

运行 SFML 应用程序(以及几乎所有其他应用程序)处于 windowed 模式时,应考虑两个主要坐标系:屏幕坐标和 window编辑坐标。 您得到的结果是错误的,因为 sf::Mouse::getPosition() return 单击屏幕坐标中的位置,而您想单击 window 坐标。 您可以手动将屏幕坐标转换为 window 坐标,但是使用 SFML 提供的这个接口要好得多:

sf::Vector2i pos = sf::Mouse::getPosition(window);

pos 将在 window 坐标中。