当使用SFML 1.6时,我遇到了一个小问题,我知道有一个简单的解决方案,但我目前无法想到它/未能通过研究找到答案。
我知道我必须使用TransformToGlobal(someVector)将精灵转换为全局位置,但我不知道放在哪里。
以下是我使用的代码示例,该代码无法正常工作,因为它不在全球位置。
if(sprite.GetSubRect().Contains(mouseX, mouseY))
sprite.SetImage(someImage);
else
sprite.SetImage(someOtherImage);
我尝试添加sprite.TransformToGlobal(sprite.GetPosition());在它之前,但它没有奏效。
答案 0 :(得分:1)
您可以尝试使用转换的鼠标位置,然后检查精灵是否包含鼠标:
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);