Я делаю шутер, где игрок может стрелять в мыши, поэтому я получил оружие, указывающее на мышь, но я не могу понять, как правильно перевернуть изображение, когда оно повернуто налево. Я имею в виду, я перевернул изображение, но оно не выровнено правильно. Я не совсем уверен, как это объяснить, вот мой код.Как перенести изображение и одновременно направить пушку на мышь? (SFML)
void PortalGun::update(Vector2i mPos) {
float pi = 3.14159265359;
float rotation = atan2(sprite.getGlobalBounds().top - mPos.y,sprite.getGlobalBounds().left - mPos.x) * 180/pi;
int x = player->sprite.getGlobalBounds().left + 16;
int y = player->sprite.getGlobalBounds().top;
if (rotation > -90 && rotation < 90) {
player->dir = -1;
sprite.setTextureRect(IntRect(0, 32, 64, -32));
} else {
player->dir = 1;
sprite.setTextureRect(IntRect(0, 0, 64, 32));
}
sprite.setPosition(x, y + 15);
sprite.setRotation(rotation + 170);
}
Когда мышь находится слева от пушки, он переворачивает изображение, но продолжает вращаться вверх так, мышь 20 иш пикселей выше. Я не могу просто изменить положение при повороте, так что мне делать? Извините за звучание немного загадочным, это немного сложно объяснить.
Есть ли какая-либо конкретная причина, по которой вы используете 'sf :: Sprite :: getGlobalBounds()'? – Mario