void TileSheetManager::setTileSheet(const string textureName)
{
texture.loadFromFile(textureName);
}
sf::Sprite TileSheetManager::getTile(int left, int top, int width, int height)
{
sf::IntRect subRect;
subRect.left = left * 32;
subRect.top = top * 32;
subRect.width = width;
subRect.height = height;
sf::Sprite sprite(texture, subRect);
return sprite;
}
я нуждаюсь getTile()
вернуть sf :: Texture, но я понятия не имею, как я могу это сделать.
Я использую SFML2.0, кстати.
Согласно документации Вот а также Вот ты должен быть способен
sf::Image fullImage = texture.copyToImage();
sf::Image croppedImage(width, height);
croppedImage.copy(fullImage, 0, 0, subRect);
sf::Texture returnTexture();
returnTexture.LoadFromImage(croppedImage);
Метод getTile
что у вас есть в данный момент, делает то, что должен. У вас есть класс управления плитками, который загружает всю таблицу спрайтов и раздает обрезанные области как спрайты. Не меняйте этот метод только для решения этой проблемы, ваш TileSheetManager
класс хорошо структурирован.
Если вы хотите преобразовать один из ваших спрайтов в текстуру, вы можете попробовать следующее.
// Get a sprite from the Tile Manager.
sf::Sprite mySprite = tileSheetMgr.getTile(1,2,3,4);
// Create a new texture for the sprite returned.
sf::Texture spriteTexture;
// Generate the texture from the sprite's image.
spriteTexture.loadFromImage(*mySprite.getImage());