在使用 SFML 1.6 时,我遇到了一个小问题,我知道有一个简单的解决方案,但我目前想不出/无法通过研究找到答案。
我知道我必须使用 TransformToGlobal(someVector) 将 Sprite 转换为全局位置,但我不知道将它放在哪里。
这是我正在使用的代码示例,它不起作用,因为它不在全局位置。
if(sprite.GetSubRect().Contains(mouseX, mouseY))
sprite.SetImage(someImage);
else
sprite.SetImage(someOtherImage);
我尝试添加 sprite.TransformToGlobal(sprite.GetPosition());之前,但效果不佳。
最佳答案
您可以尝试使用转换后的鼠标位置,然后检查 Sprite 是否包含鼠标:
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);
关于C++ SFML 1.6 带鼠标的 Sprite 位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9552107/