C++SFML 1.6精灵位置与鼠标

C++ SFML 1.6 Sprite Position with Mouse

本文关键字:鼠标 位置 精灵 C++SFML      更新时间:2023-10-16

在使用SFML 1.6时,我遇到了一个小问题,我知道有一个简单的解决方案,但我目前想不出来/还没能通过研究找到答案。

我知道我必须使用TransformToGlobal(someVector)将精灵转换到全局位置,但我不知道该把它放在哪里

下面是我使用的代码的一个例子,它不起作用,因为它不在全局位置。

if(sprite.GetSubRect().Contains(mouseX, mouseY))
    sprite.SetImage(someImage);
else
    sprite.SetImage(someOtherImage);

我试着添加精灵。TransformToGlobal(sprite.GetPosition());在它之前,但它没有那么好用。

您可以尝试使用转换后的鼠标位置,然后检查精灵是否包含鼠标:

sf::Vector2f mousePos = App.ConvertCoords(App.GetInput().GetMouseX(), App.GetInput().GetMouseY());
if(sprite.GetSubRect().Contains(mousePos.x, mousePos.y))
    sprite.SetImage(someImage);
else
    sprite.SetImage(someOtherImage);