Je voudrais placer l'explosion par dessus le sprite et si possible au centre de ce sprite.
Jusqu'à présent, j'avais juste besoin de dessiner mon sprite avec comme origine Vector2f(0,0);. Lorsque je crée une explosion via le constructeur, je lui transmet le centre du sprite. Enfin, je pense que le mieux c'est que je te montre le code :
// Ma classe Enemy
Vector2f Enemy::setOrigin() {
return Vector2f((sprite.getGlobalBounds().width / frameCount) / 2, sprite.getGlobalBounds().height / 2);
}
Vector2f Enemy::getOrigin() {
return sprite.getOrigin();
}
Enemy::Enemy() {
origin = setOrigin();
sprite.setOrigin(origin);
}
// Ma classe Explosion
Explosion::Explosion(Vector2f position, Vector2f origin, float rotation, Vector2f scale) {
sprite.setTexture(FileManager::Instance()->items[4]);
sprite.setOrigin(origin);
this->origin = origin;
sprite.setPosition(position);
sprite.setRotation(rotation);
sprite.setScale(scale);
this->scale = scale;
this->position = position;
this->rotation = rotation;
active = true;
initialize();
}
// Création d'une explosion
explosions.emplace_back(Vector2f(wave.enemies[i].getPosition(), wave.enemies[i].getOrigin(), wave.enemies[i].sprite.getRotation(), Vector2f(1.2,1.2));
Ce code fonctionne très bien pour un sprite de grande taille, l'explosion apparaît bien au centre du sprite. Mais étrangement, pour les sprites de petites taille il se dessine légèrement plus en bas et légèrement plus vers la droite. Logique vu que je lui demande de dessiner l'explosion par rapport au centre...
Le plus simple que je vois, c'est dessiner au centre l'explosion d'un sprite de grande taille et des petits sprite par rapport à Vector2f(0,0); ?