Не могу заставить текстуры отображаться, уже всю голову сломал :(
Создал класс Bullet. Если не учитывать движение, то всё будет выглядеть примерно так(минимальная конструкция):
bullets[0] = Bullet(Rbullet, Tbullet, velocityBullet);
bullets[0].create(player.getPosition().x, player.getPosition().y);
bullets[0].render(window);
В результате всё работает даже без IntRect(ширина и высота кореекстно считываются с текстуры), но текстура вся белая.
Если работать не с массивом (векторы), а с одним объектом, то всё будет работать нормально:
Bullet test(Rbullet, Tbullet, velocityBullet);
test.create(player.getPosition().x, player.getPosition().y);
test.render(window);
Вот заголовочный файл класса и файл с реализацией класса:
#ifndef BULLET_H
#define BULLET_H
class Bullet {
public:
Bullet(sf::IntRect bulletRect, sf::Texture bulletTexture, sf::Vector2f velocityBullet);
~Bullet();
void create(float bulletXPostition, float bulletYPosition);
bool update(float deltaTime, sf::RenderWindow &window);
void render(sf::RenderWindow &window);
private:
sf::IntRect Rbullet;
sf::Texture Tbullet;
sf::Sprite bullet;
sf::Vector2f velocity;
};
#endif
#include "bullet.hpp"
Bullet::Bullet(sf::IntRect bulletRect, sf::Texture bulletTexture, sf::Vector2f velocityBullet) {
Tbullet = bulletTexture;
Rbullet = bulletRect;
bullet.setTexture(Tbullet);
bullet.setTextureRect(Rbullet);
bullet.setPosition(sf::Vector2f(-100.f, -100.f));
velocity = velocityBullet;
}
Bullet::~Bullet() {
}
void Bullet::create(float bulletXPostition, float bulletYPosition) {
bullet.setPosition(sf::Vector2f(bulletXPostition, bulletYPosition));
}
bool Bullet::update(float deltaTime, sf::RenderWindow &window) {
bool isBool = true;
bullet.move(velocity * deltaTime);
if(bullet.getPosition().y < 0.f - Rbullet.height || bullet.getPosition().y > window.getSize().y)
isBool = false;
return isBool;
}
void Bullet::render(sf::RenderWindow &window) {
window.draw(bullet);
}