SFML - 精灵未正确居中
SFML - sprite not centering properly
我有一张尺寸为 256 × 256 的图像,我想将其居中,但由于某些奇怪的原因它无法正常工作。
如您所见,它没有居中。这是代码:
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'.
有问题
第一次发帖,如有遗漏请见谅。
您需要做的就是根据 window 宽度和高度设置纹理位置。这里的伪代码:
texturePosition.X = (windowWidth - textureWidth) / 2;
texturePosition.Y = (windowHeight - textureHeight) / 2;
我有一张尺寸为 256 × 256 的图像,我想将其居中,但由于某些奇怪的原因它无法正常工作。
如您所见,它没有居中。这是代码:
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'.
有问题第一次发帖,如有遗漏请见谅。
您需要做的就是根据 window 宽度和高度设置纹理位置。这里的伪代码:
texturePosition.X = (windowWidth - textureWidth) / 2;
texturePosition.Y = (windowHeight - textureHeight) / 2;