C ++ SFML 1.6 ตำแหน่งสไปรท์ด้วยเมาส์

เมื่อใช้ SFML 1.6 ฉันประสบปัญหาเล็กๆ น้อยๆ ซึ่งฉันรู้ว่ามีวิธีแก้ไขง่ายๆ แต่ขณะนี้ฉันไม่สามารถคิดได้/ ไม่สามารถหาคำตอบผ่านการค้นคว้าได้

ฉันรู้ว่าฉันต้องแปลงสไปรท์ให้อยู่ในตำแหน่งสากลโดยใช้ TransformToGlobal(someVector) แต่ฉันไม่รู้ว่าจะวางไว้ที่ไหน

นี่คือตัวอย่างโค้ดของฉันที่ฉันใช้ซึ่งใช้งานไม่ได้เนื่องจากไม่อยู่ในตำแหน่งส่วนกลาง

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

ฉันพยายามเพิ่ม sprite.TransformToGlobal(sprite.GetPosition()); เมื่อก่อนแต่ก็ไม่ได้ผลเช่นกัน


person user1062898    schedule 04.03.2012    source แหล่งที่มา


คำตอบ (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);
person priomsrb    schedule 14.03.2012