Я играю в маленькую игру с использованием 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);
}
А затем класс игрока, который является классом, который dr aws спрайт:
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
, но она также меняет цвет текстуры.