SFML - спрайт не центрируется должным образом - PullRequest
0 голосов
/ 25 апреля 2018

У меня есть изображение размером 256 × 256, которое я хочу отцентрировать, но по какой-то странной причине оно не работает.

Image of game running

Как видите, это не такпо центру.Вот код:

int main()
{
    int w = 720;
    int h = 360;

Какой-то другой код:

sf::RenderWindow window(sf::VideoMode(w, h), "RPG Game", sf::Style::Default);
sf::Texture texture;
texture.loadFromFile("WalkCycle.png");
sf::Texture inventory;
inventory.loadFromFile("Inventory.png");
sf::Sprite player(texture);
sf::Sprite inventorySprite(inventory);

sf::Vector2u textureSize = texture.getSize();
textureSize.x /= 9;
textureSize.y /= 4;

player.setTextureRect(sf::IntRect(0, 0, textureSize.x, textureSize.y));
player.setOrigin(textureSize.x/2, textureSize.y/2);
player.setPosition(w/2, h/2);
inventorySprite.setTextureRect(sf::IntRect(0, 0, 256, 256));
inventorySprite.setOrigin(256/2, 256/2);
inventorySprite.setPosition(w/2, h/2);

//Game loop

if(sf::Keyboard::isKeyPressed(sf::Keyboard::E))
        inventoryOpen = true;

if(inventoryOpen)
        window.draw(inventorySprite);

Игнорировать спрайт игрока.У меня проблема с InventorySprite.

Это мой первый пост, поэтому извините, если я забыл что-то добавить.

1 Ответ

0 голосов
/ 25 апреля 2018

Все, что вам нужно сделать, это установить позицию текстуры относительно ширины окна и высоты.Здесь псевдокод:

texturePosition.X = (windowWidth - textureWidth) / 2;
texturePosition.Y = (windowHeight - textureHeight) / 2;
...