SFML 鼠标获取位置无法正常工作



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

法典:

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

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

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

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

在窗口模式下运行 SFML 应用程序(以及几乎所有其他应用程序(时,应考虑两个主要坐标系:屏幕坐标和窗口坐标。 您得到的结果是错误的sf::Mouse::getPosition()因为返回屏幕坐标中的单击位置,并且您希望单击窗口坐标。 您可以手动将屏幕坐标转换为窗口坐标,但使用 SFML 提供的此接口要好得多:

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

pos将位于窗口坐标中。

最新更新