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 坐标中。
我正在尝试让我的光标精灵出现在我的鼠标光标上方,但由于某种原因它没有出现在鼠标光标上方。
代码:
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 坐标中。