0

所以,我目前正在开发我的第一个游戏(和 C++ 应用程序)作为一种爱好,但我遇到了一个问题,我不知道如何解决它。任何帮助当然表示赞赏。

我的问题如下:

每当我单击或按下键盘上的某个键时,鼠标坐标都会跳到非常奇怪的值,然后在一秒钟后恢复正常。这弄乱了我对子弹轨迹等的矢量计算。

示例: http: //puu.sh/3xjFq.jpg

正如您在我的控制台窗口中看到的,Y 坐标从正确的值 (628) 跳到 (-858993460),然后跳到 (65536),然后又跳到正确的值。

我用来检索鼠标坐标的代码:

cout << "X: " << event.mouseMove.x << " Y: " << event.mouseMove.y << endl;

这也是我用来检索鼠标坐标以进行计算的相同代码。

我猜我的问题的根源是 SFML 本身,以及它的工作方式。检索鼠标坐标的替代方法是什么?

请注意,我对此仍然非常陌生(从上周开始),因此请尽量保持一切简单。

任何帮助表示赞赏,谢谢!

4

1 回答 1

3

事件存储在 SFML 的联合中。如果您不知道工会是如何运作的,那么您绝对应该阅读它(维基百科)。一言以蔽之,不同的变量在内存中共享相同的空间。当用错误的类型解释它们时,这显然会给你奇怪的值。

当你写:

event.mouseMove.x/y

成员的值xy仅当您正在查看的事件是sf::Event::MouseMoved. 如果您想在按下按钮时检查鼠标的坐标(即类型的事件sf::Event::MouseButtonPressed),您必须使用

event.mouseButton.x/y
于 2013-07-07T21:08:53.800 回答