【问题标题】:SFML mouse getPosition not working properlySFML 鼠标 getPosition 无法正常工作
【发布时间】:2018-12-15 18:24:05
【问题描述】:

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

代码:

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 文档对此进行了介绍。

标签: c++ sfml


【解决方案1】:

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

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

pos 将位于窗口坐标中。

【讨论】:

    猜你喜欢
    • 2015-02-25
    • 1970-01-01
    • 1970-01-01
    • 2013-03-14
    • 2016-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多