Bonjour,
J'utilise un tableau qui stock mes projectiles. Jusque là tout va bien, j'arrive à ajouter des projectiles et à les afficher ainsi que les détruire mais je n'arrive pas à les déplacer.
Pourtant quand j'affiche la valeur x et y de ce projectile je vois bien une évolution mais rien ne se passe à l'écran ...
Voici le code du ProjectileManager :
#include "ProjectileManager.h"
ProjectileManager::ProjectileManager() : sf::Sprite()
{
//ctor
}
ProjectileManager::~ProjectileManager()
{
//dtor
}
void ProjectileManager::addProjectile(Spaceship &spaceship)
{
m_projectiles.push_back(Projectile(&spaceship));
}
void ProjectileManager::deleteProjectile()
{
for (unsigned int i = 0; i < m_projectiles.size(); i++)
{
m_projectiles.erase(m_projectiles.begin() + i);
}
}
void ProjectileManager::drawProjectile(sf::RenderWindow& window)
{
for (unsigned int i = 0; i < m_projectiles.size(); ++i)
{
window.draw(m_projectiles[i]);
}
}
void ProjectileManager::moveProjectile()
{
for (unsigned int i = 0; i < m_projectiles.size(); ++i)
{
m_projectiles[i].move(0, 1);
int y = m_projectiles[i].getPosition().y;
int x = m_projectiles[i].getPosition().x;
//std::cout << x << " | " << y << std::endl;
}
}
Ma classe principale :
ProjectileManager projectile;
if ( (event.type == sf::Event::KeyPressed) && (event.key.code == sf::Keyboard::Space) )
{
projectile.addProjectile(spaceship);
}
if ( (event.type == sf::Event::KeyPressed) && (event.key.code == sf::Keyboard::LControl) )
{
projectile.moveProjectile();
}
window.clear();
projectile.drawProjectile(window);
window.display();
et pour finir voici mon projectile :
#include "Projectile.h"
Projectile::Projectile(Spaceship* spaceship)
{
Projectile_Blue.setSize(sf::Vector2f(10, 10));
Projectile_Blue.setPosition(spaceship->getPositionX() + 25, spaceship->getPositionY()+25);
Projectile_Blue.setFillColor(sf::Color::Blue);
std::cout << Projectile_Blue.getPosition().y << std::endl;
}