【发布时间】:2020-07-13 09:50:12
【问题描述】:
我正在使用 SFML 管理一个小游戏,无论如何,我的问题是在渲染精灵时,并使用浮点值移动。精灵有一个白色背景,无论哪一边移动都会显示 1 像素。
这是我的 Spritesheet 类:
Spritesheet::Spritesheet(std::string t) {
this->texture.loadFromFile(t);
this->sprite.setTexture(this->texture);
}
sf::Sprite Spritesheet::getSprite(int x, int y, int width, int height) {
sf::Sprite spt;
spt.setTexture(this->texture);
spt.setTextureRect(sf::IntRect(x, y, width, height));
return spt;
}
void Spritesheet::setSprite(std::string t) {
this->texture.loadFromFile(t);
this->sprite.setTexture(this->texture);
}
然后是绘制精灵的播放器类:
Player::Player(int x, int y) {
// Some other code
this->spritesheet.setSprite("./res/img/tiles.png");
this->sprite = this->spritesheet.getSprite(48, 48, 16, 16);
this->sprite.setPosition(x, y);
this->sprite.scale(4, 4);
}
// Further down
void Player::render(RenderWindow& g) {
g.draw(this->sprite);
}
我也尝试过使用精灵函数setColor,但这也会改变纹理颜色。
【问题讨论】:
-
我从不使用 sfml,但这对我来说似乎不是 sprite 的问题。也许是一些缓冲问题?
-
@appleapple 我真的不知道我已经搜索了一段时间并没有找到任何东西。